Ú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,
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

-
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
- BestBuy topik
- Google Pixel 10a – évismétlés
- Geri Bátyó: Agglegénykonyha 13 – Néhány egyszerű, de finom étel
- Autós topik látogatók beszélgetős, offolós topikja
- Anglia - élmények, tapasztalatok
- Automata kávégépek
- Milyen videókártyát?
- PH!otósok beszélgetős, offolós topikja
- Arc Raiders
- Kerékpárosok, bringások ide!
- További aktív témák...
- iPhone 11 64GB 100% (3hónap Garancia) - AKCIÓ
- Lenovo T14 Gen 1 Ryzen 5 pro 4650U, 16GB RAM, 256-512GB SSD, jó akku, számla, garancia
- HIBÁTLAN iPhone 17 Pro Max 256GB Deep Blue-1 ÉV GARANCIA - Kártyafüggetlen, 100% Akksi
- HIBÁTLAN iPhone 12 256GB Blue-1 ÉV GARANCIA - Kártyafüggetlen, MS4462
- Lenovo ThinkPad T15 Gen 2 i5-1135G7 16GB Ram 256 GB SSD FHD IPS Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
ez alapján is: