Avatar billede idefixer Nybegynder
25. august 2002 - 16:04 Der er 2 kommentarer

Declare Cursors

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
Avatar billede gigraf Nybegynder
29. november 2002 - 12:14 #1
Det kan man ikke. er ikke tilladt i sybase paa denne maade! men faa at kunne hjaelpe dig skal jeg vide hvad du vil opnaa!

/gigraf
Avatar billede sqlanywhere Nybegynder
26. august 2003 - 18:01 #2
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester