Hej jeg har et problem med at få nedenstående til at fungere i en Stored Procedure. Hvad er galt??? Meddelelsen er at cursporen ikke er defineret.
Proceduren kaldes med:
CALL('Test','Number')
alter procedure DBA.Test_copy(in tab varchar(20),in col varchar(20)) begin execute immediate 'declare jhcur dynamic scroll cursor for select '+col+' from '+tab; end
For det første så er din eksekvering af proceduren forkert hvis du altså ikke skriver CALL DBA.Test_copy('Test','Number'). Håber det bare er en skrivefejl her på eksperten. Dit execute immediate er ikke det bedste og smarteste at bruge i Sybase ASA (ud fra SQL syntaksen kan se at det ikke er Sybase ASE) til en cursor i en stored procedure. Anvend i stedet følgende statement:
declare crsr cursor using variabel
Hvor variabel enten er en input variabel til proceduren, eller er sat sammen i selve proceduren, vha. et par input parametre. F.eks. vil det i dit tilfælde se ud som følger inde i selve proceduren:
declare stmt long varchar;
select stmt = 'declare jhcur dynamic scroll cursor for select '+col+'from '+tab; begin declare crsr cursor using stmt; ... ... her står så hvad du gør med hver enkelt record. ... end
Held og lykke
/sqlanywhere
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.