Avatar billede daddo Nybegynder
16. april 2002 - 00:24 Der er 8 kommentarer og
2 løsninger

modtage værdi fra SP

Hvordan modtager jeg en værdi fra en Stored procedures.

- SP -----------------------------
@slet int Output
Set @slet='ok'

- VB ------------------------------

sql$ = "EXECUTE SP_SletSammeNavn @navn='" & navn & "';"
   
objConn.Execute (sql)

msgbox @slet

Avatar billede ocp Nybegynder
16. april 2002 - 00:30 #1
Den bedste (mest fleksible) måde er at slutte sin sp med at select'e de værdier man gerne vil have ud og så lægge følgende kode i VB:

dim rs as adodb.recordset
set rs = objConn.Execute(sql)
msgbox rs.fields(0).value
Avatar billede ocp Nybegynder
16. april 2002 - 00:31 #2
Det skal selvfølgelig siges at det til gengæld ikke er den bedste måde at overføre værdier mellem stored procedures, men det er en helt anden historie.
Avatar billede daddo Nybegynder
16. april 2002 - 00:37 #3
Det jeg godt kunne tænke mig, er at kunne sende en besked tilbage fra SP, om hvad der er gjort.

feks.
set @besked='Der blev slette 2, oprette 7 nye'
Avatar billede daddo Nybegynder
16. april 2002 - 01:37 #4
Mit problem er hvordan man får fat i @besked, på den bedste måde, i visual basic.
Avatar billede nolle_k Nybegynder
16. april 2002 - 08:15 #5
Prøv med

RaisError ('Besked til VB', 16, 1) i SP'en (RaisError er kun med et dobbelt r). Skal selvfølgelig stå til aller sidst i SP'en da det betragtes som en error i SQL


Så i VB

dim rs as adodb.recordset
On Error Resume Next
set rs = objConn.Execute(sql)
msgbox rs.fields(0).value
MsgBox Err.Description

Jeg er ikke sikker på at det virker men prøv det!

//Nolle_K
Avatar billede ocp Nybegynder
16. april 2002 - 09:53 #6
Jeg synes generelt det er forkert at benytte fejlhåndteringen til ting der reelt ikke er fejl. Prøv i stedet:

I sp'en:

declare @deleted int
declare @inserted int

Insert into ....

set @inserted = @@RowCount

Delete from ...

set @deleted = @@RowCount

select 'Slettet: ' + cast(@deleted as varchar) + ' poster, Oprettet: ' + @inserted + ' poster.'

Eller

select @deleted, @inserted

Og så i VB:

msgbox "Slettet: " & rs.fields(0).value & " poster, Oprettet: " & rs.fields(0).value & " poster.".
Avatar billede ocp Nybegynder
16. april 2002 - 09:54 #7
Ups, jeg glemte at "modificere" @inserted. Erstat @inserted i select-statementet med cast(@inserted as varchar).
Avatar billede nolle_k Nybegynder
16. april 2002 - 10:15 #8
Det synes jeg også men det er da en måde at løse problemet på!
Avatar billede daddo Nybegynder
16. april 2002 - 15:20 #9
Tak
jeg fik det til at virke...
Avatar billede nolle_k Nybegynder
16. april 2002 - 15:26 #10
Hvordan endte det med at du gjorde??
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
Kurser inden for grundlæggende programmering

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