Portál AbcLinuxu, 14. května 2025 05:43

Dotaz: dynamicky kurzor

18.6.2009 09:17 peter
dynamicky kurzor
Přečteno: 357×
Odpovědět | Admin

Ahoj, mam takyto problem, mam v tabulke vela stlpcov, ktore vsetky vytiahnem do deklarovaneho kurzora mysql: DECLARE cur1 CURSOR FOR SELECT * FROM table1 WHERE id = NEW.id;

Nasledne potrebujem vziat tieto hodnoty a prekopirovat ich do tabulky table1_zaloha co je zaloha tabulky table1 okrem id. Problem je vtom, ze tych stlpcov je velmi vela a pride mi nezmyslene, deklarovat premenu pre kazdy stlpec zvlast a potom to z kurzora nakopirovat do tychto premennych a opat insertnut do tabulky table1_zaloha. Nejde to nieak jednoduchsie, bez deklaracie tych premennych?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.6.2009 10:21 pSipi
Rozbalit Rozbalit vše Re: dynamicky kurzor
Odpovědět | | Sbalit | Link | Blokovat | Admin

A preco to preboha robis takto obtiazne cez cursor?

INSERT INTO zaloha

SELECT * FROM table1 WHERE id = NEW.id;

Taktio by ti to nestacilo?

18.6.2009 11:14 peter
Rozbalit Rozbalit vše Re: dynamicky kurzor

Ale tych zaznamou tam moze byt viac, id v tomto pripade nie je unikatne.

18.6.2009 11:27 pSipi
Rozbalit Rozbalit vše Re: dynamicky kurzor

Co to ma s tym spolocne ci ich je viac alebo nie? Insertne ich tolko kolko ich vyselektujes.

Ak tam mas v zalohe iny primary index  ako v originale tak tie stlpce budes musit vymenovat asi takto

Insert Into zaloha (stlpec1,stlpec2,stlpec3)

Select stlpec1,stlpec2,stlpec3 FROM table1 WHERE id = NEW.id;

Ale bude to robit v jednom kroku a neporovnatelne rychlejsie ako kurzorom.

Doporucujem precitat help na Insert

18.6.2009 11:48 peter
Rozbalit Rozbalit vše Re: dynamicky kurzor

No vyhodi mi to chybu Duplicate entry '668' for key 1 lebo v oboch tabulkach su hodnoty table_id ako primarne kluce a snazi sa tam insertnut aj tie, a kedze uz v tabulke existuje, skonci to z chybou. Nejde to nieako vyselektovat bez table_id, aby som nemusel vypisovat vsetky tie stlpce?

18.6.2009 11:55 pSipi
Rozbalit Rozbalit vše Re: dynamicky kurzor

Ved si sprav select len na tie co neexistuju v zalohe. Napr:

SELECT *

FROM table1

Left Join zaloha on zaloha.ID = table1.ID

WHERE id = NEW.id and zaloha.id is Null;

Neviem ci je syntax spravny lebo ja pisem v MS SQL ale left join hadam zvladnes.

18.6.2009 12:08 peter
Rozbalit Rozbalit vše Re: dynamicky kurzor

v zalohe je presne to co je v originale, aj auto increment, to je vlastne tabulka kde sa odkladaju nezname entity a ked sa stanu zanmimy, tak ich chcem preklopit do originalu, tak ze bude tam plno zaznamou, ktore maju rovnake table_id

18.6.2009 12:16 pSipi
Rozbalit Rozbalit vše Re: dynamicky kurzor

No neviem co to pises za program ale supat zaznamy z tabuky do tabulky s autoincrement ID je docela blby napad.

Riesit si to mohol jednoduchym status fieldom.  Minimalne v tej zalohe ten autoincrement nepotrebujes.

 

18.6.2009 12:45 peter
Rozbalit Rozbalit vše Re: dynamicky kurzor

Potrebujem lebo tam zapisuju zariadenia ktore su nezname. Nejde spravit ten select njeako tak, ze vyberiem vsetko okrem table_id, aby som tam nemusel vsetky tie stlpce vypisovat?

18.6.2009 13:30 pSipi
Rozbalit Rozbalit vše Re: dynamicky kurzor

Nie neda a znova to vravim ze to je blby napad a tom kurzore ani nehovorim.

18.6.2009 14:51 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: dynamicky kurzor
Nejde spravit ten select njeako tak, ze vyberiem vsetko okrem table_id, aby som tam nemusel vsetky tie stlpce vypisovat?
Jde, jednoduše použijete libovolný nástroj, který umí podle schématu databáze vytvořit šablonu SQL dotazu (třeba SQuirreL SQL), a ten jeden sloupeček z výsledné šablony umažete.
18.6.2009 16:35 peter
Rozbalit Rozbalit vše Re: dynamicky kurzor

Mysslel som nieco sofistikovanejsie.

18.6.2009 16:40 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: dynamicky kurzor
Tohle je ale nejsprávnější řešení. Čímkoli jiným si možná teď ušetříte práci, ale zaděláte si na problémy v budoucnosti. Hvězdička v SELECTech je jenom taková pomůcka pro rychlé prototypování nebo ad-hoc dotazy, používat ji normálně v programu nebo v produkčním prostředí není dobrý nápad.
18.6.2009 17:14 peter
Rozbalit Rozbalit vše Re: dynamicky kurzor

Ok, dakujem.

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.