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
Et nyt nationalt initiativ fra Industriens Fond, EIFO og Innovationsfonden – eksekveret af DTU Science Park og Teknologisk Institut– skal bygge bro mellem startups, SMV’er og Forsvaret.
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.