Keresés

Új hozzászólás Aktív témák

  • F1DO

    senior tag

    válasz baracsi #2225 üzenetére

    Köszönöm az útbaigazítást, :K ez alapján is:

    Közkinccsé:

    tárolt eljárás, ami meghíváskor a paraméterben átadott névre (név_mentes_évhónap) illetve ugyanazon nevű forrástábla alapján úgy hozza létre az új táblát, hogy ellenőrzi az adandó táblanévvel létezik-e már tábla és ha nem, létrehozáskor megőrzi a forrás tábla beállításait (kulcs oszlop, stb):

    DELIMITER //
    CREATE PROCEDURE tabla_masolas(IN tablanev VARCHAR(255))
    BEGIN
    DECLARE uj_tabla VARCHAR(255);
    SET uj_tabla = CONCAT(tablanev,'_mentes_', DATE_FORMAT(NOW(), '%Y%m%d'));

    IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = uj_tabla) THEN
    -- Létrehozzuk az új táblát az eredeti tábla szerkezetével
    SET @sql_code = CONCAT('CREATE TABLE ', uj_tabla, ' LIKE ', tablanev);

    PREPARE stmt FROM @sql_code;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    -- Másoljuk át az adatokat az eredeti táblából az új táblába
    SET @sql_code = CONCAT('INSERT INTO ', uj_tabla, ' SELECT * FROM ', tablanev);

    PREPARE stmt FROM @sql_code;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    ELSE
    SELECT 'A képzendő táblanév már létezik.';
    END IF;
    END //
    DELIMITER ;

  • F1DO

    senior tag

    Kicsit átírtam de nem lett jobb. Fontos infó lehet hogy 5.7-es a Mysql verzió

    DELIMITER //
    CREATE PROCEDURE allomany_masolas(allomany VARCHAR(MAX))
    BEGIN
    DECLARE tabla VARCHAR(255);
    DECLARE sql_C VARCHAR(MAX);
    SET tabla = CONCAT('allomany_mentes_', DATE_FORMAT(NOW(), '%Y%m%d'));
    SET sql_C = CONCAT('CREATE TABLE ', tabla, ' AS SELECT * FROM ', allomany);
    PREPARE stmt FROM sql_C;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    END ;
    //
    DELIMITER ;

    #1064 - A Szintaktikai hiba a 'MAX))
    BEGIN
    DECLARE tabla VARCHAR(MAX);
    DECLARE sql_C VARCHAR(MAX);

    SET ta'-hez kozeli a 1 sorban

    Új phpMyAdmin ablak nyitása

  • F1DO

    senior tag

    Sziasztok!

    PhPMyAdmin-ban mysql tárolt eljárást szeretnék létrehozni, szintaktikai hibát jelez, nem jövök rá hol lehet a gond - tudnátok segíteni?

    Egy szimpla táblamásolás - mentési célból feladat megoldása lenne, annyi hogy a táblanévben legyen benne az aktuális év hó nap

    DELIMITER //
    CREATE PROCEDURE allomany_masolas(allomany VARCHAR(255))
    BEGIN
    DECLARE allomany_mentes_ VARCHAR(255);
    DECLARE sql_C TEXT;
    -- Az új táblanév létrehozása az aktuális dátum alapján
    SET allomany_mentes_ = CONCAT(allomany, '_', DATE_FORMAT(NOW(), '%Y_%m_%d'));
    -- SQL parancs összeállítása
    SET sql_C = CONCAT('CREATE TABLE ', allomany_mentes_, ' AS SELECT * FROM ', allomany);
    -- SQL parancs végrehajtása
    PREPARE stmt FROM sql_C;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    END //
    DELIMITER ;

  • F1DO

    senior tag

    Sziasztok, egy kérdésem lenne:

    Ugye az order by záradék 'jellege miatt' ez a véletlenszerű tábla lekérdezés ismétlődés nélküli? (mondjuk 100-ból választunk véletlenszerűen 10 rekordot)
    SELECT * FROM tábla WHERE valami = érték ORDER BY rand() LIMIT 10

Új hozzászólás Aktív témák