Autor Zpráva
paranoiq
Profil *
lze zkonvertovat výsledek volání MySQL procedury do podoby se kterou je možno pracovat jako se SELECTem?

potřebuji volání použít jako poddotaz, v UNIONu atd.

nic z následujícího bohužel nefunguje:

SELECT * FROM (CALL ...) WHERE ...

(CALL ...) UNION (CALL ...)

CREATE TEMPORARY TABLE tmp_table AS (CALL ...)
Kajman_
Profil *
Myslím, že v mysql procedura nic nevrací. Vrátit může něco funkce, ale v mysql ani není podpora vrácení virtuální tabulky jako v pokročilejších databázích.
paranoiq
Profil *
ano, procedura nemá návratovou hodnotu jako mají funkce. výsledkem volání procedury je právě výsledek posledního volání SELECT v proceduře. bohužel CALL nelze kvůli syntaxi jazyka použít stejným způsobem jako SELECT
TomášK
Profil
paranoiq:
MySQL tohle neumožňuje. Result set, který vrací procedura, nelze použít jako součást SELECTu, viz feature request http://bugs.mysql.com/bug.php?id=10817, který byl přijat. Je pro verzi 5.0, pokud se něco změnilo od té doby, nevím o tom. Řekl bych, že to není tak dávno, kdy nebylo ani možné zpracovat výsledek procedury např. v PHP. - procedury se jen provedly, ale nevracely vůbec nic.
paranoiq
Profil *
prozatím to řeším tak, že výsledek uvnitř procedury navíc ukládám do dočasné tabulky stejného jména jako procedura (se suffixem). není to příliš elegantní :[

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: