Portál AbcLinuxu, 8. května 2025 08:15

Dotaz: Programování procedury v mysql - analýza řetězce apod.

14.1.2011 14:02 RAQUIN
Programování procedury v mysql - analýza řetězce apod.
Přečteno: 605×
Odpovědět | Admin
Dobrý den. Mám v jednom sloupci v mysql uloženou strukturu tabulky ve formátu "nazevsloupce: datovytyp; dalsislo.....". Je možné vytvořit takovou proceduru, která tento řetězec rozkouskovala, analyzovala a vytvořila potřebnou tabulku? Vlastně potřebuju vytvořit create table "generovanynazev" příkaz a pak to spustit.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.1.2011 15:50 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Programování procedury v mysql - analýza řetězce apod.
Odpovědět | | Sbalit | Link | Blokovat | Admin
jde to přes Prepared Statements nějak takto
SET @c = "generovanynazev"; 
SET @s = CONCAT("CREATE TABLE `", @c,"`");
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
14.1.2011 16:25 RAQUIN
Rozbalit Rozbalit vše Re: Programování procedury v mysql - analýza řetězce apod.
Mě jde spíš o to jak vyseparovat ty názvy a datové typy sloupců a předhodit je tedy tomu stmt.
14.1.2011 18:47 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Programování procedury v mysql - analýza řetězce apod.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Něco je na dotazu shnilého - sám požadavek :)
Nápověda 1:
SELECT CONCAT('UDELEJ TABULKU pepa (',
 SUBSTRING_INDEX('nazevsloupce: datovytyp; dalsislo',':',1), ' ',
 SUBSTRING_INDEX(SUBSTRING_INDEX('nazevsloupce: datovytyp; dalsislo',';',1),': ',-1), ' ' ,
 SUBSTRING_INDEX('nazevsloupce: datovytyp; dalsislo',';',-1), ')') AS sqlquery;


Nápověda 2:
DROP PROCEDURE IF EXISTS myGroSSeBigProcedure;
delimiter $$
CREATE PROCEDURE myGroSSeBigProcedure ()
BEGIN
  set @val = 'nazevsloupce: datovytyp; dalsislo';
  set @sqlquery = CONCAT('UDELEJ TABULKU pepa (',\
                           SUBSTRING_INDEX(@val,':',1), ' ',\
                           SUBSTRING_INDEX(SUBSTRING_INDEX(@val,';',1),':' ,-1), ' ' ,\
                           SUBSTRING_INDEX(@val,';',-1), ')');
  PREPARE s1 FROM @sql;
  EXECUTE s1;
  DEALLOCATE PREPARE s1;
END$$
delimiter ;
SELECT 'Zde volam tu proceduru' AS mess;
CALL myGroSSeBigProcedure;
SELECT 'Zde konci chybove hlaseni, bo prikaz je nesmysl' AS mess;
DROP PROCEDURE myGroSSeBigProcedure;
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.