Autor | Zpráva | ||
---|---|---|---|
paranoiq Profil * |
#1 · Zasláno: 14. 1. 2011, 17:15:50
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 * |
#2 · Zasláno: 15. 1. 2011, 21:47:32
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.
|
||
Časová prodleva: 3 dny
|
|||
paranoiq Profil * |
#3 · Zasláno: 18. 1. 2011, 10:34:40
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 |
#4 · Zasláno: 18. 1. 2011, 15:56:06
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 * |
#5 · Zasláno: 19. 1. 2011, 18:28:32
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í :[
|
||
Časová prodleva: 13 let
|
0