Avatar billede sprocket Nybegynder
08. august 2001 - 15:05 Der er 14 kommentarer og
1 løsning

Hvordan returnere jeg en værdi fra en stored procedure

Hvordan giver jeg @antal en værdi. Jeg ved godt hvordan værdien hentes fra ASP, spørgsmålet er hvordan jeg sætter @antal, så den bliver returneret som et output parameter?

CREATE PROCEDURE test
    @antal OUTPUT
as
set @antal = 12
go
Avatar billede kelo Nybegynder
09. august 2001 - 15:19 #1
Jeg går udfra at du vil have antal vist fra en asp site.

Response.write objRS(\"antal\")

Sådan mener jeg at det er
Avatar billede sprocket Nybegynder
09. august 2001 - 15:21 #2
Nej, jeg vil vide hvordan @antal gives en værdi i en stored procedure
Avatar billede kelo Nybegynder
09. august 2001 - 15:26 #3
Hmm du har gjort det rigtig:

Prøv lige at lave en:

set @antal = 12
Print @antal
Avatar billede kelo Nybegynder
09. august 2001 - 15:28 #4
hvis det ikke hjælper så prøv lige at lav en

Declare @antal int efter as
Avatar billede ditlevsen Nybegynder
09. august 2001 - 15:43 #5
Du skal definere din data type:

CREATE PROCEDURE test
    @antal INT OUTPUT
as
set @antal = 12
Avatar billede sprocket Nybegynder
09. august 2001 - 15:54 #6
Her er asp-koden, som jeg bruger til at kalde, men @antal indeholder ingenting!

Set con = Server.CreateObject(\"ADODB.Command\")
con.ActiveConnection = RS
con.CommandText = \"test\"
con.CommandType = 4
con.parameters.append con.createParameter(\"@antal\", 3, 2, ,3)
set record = con.execute
response.write \"Antal: \" & con.parameters(\"@antal\").value
Avatar billede ditlevsen Nybegynder
09. august 2001 - 16:29 #7
du skal ikke bruge @ når i VB:
con.parameters.append con.createParameter(\"antal\", 3, 2, ,3)
Avatar billede sprocket Nybegynder
09. august 2001 - 16:34 #8
Det hjalp ikke:(
Avatar billede ditlevsen Nybegynder
09. august 2001 - 16:42 #9
Prøv denne her:

With con
    .CommandText = \"test\"
    .CommandType = adCmdStoredProc
    .Parameters.Append objCmd.CreateParameter(\"Return\", adInteger, adParamOutput)
    .Execute
End With

response.Write \"Antal: \" & con(\"antal\")
Avatar billede sprocket Nybegynder
09. august 2001 - 16:43 #10
Her er al koden:

ASP:
Set RS = Server.CreateObject(\"ADODB.Connection\")
RS.Open DBConnectionString(\"SHARED\")

Set con = Server.CreateObject(\"ADODB.Command\")
con.ActiveConnection = RS
con.CommandText = \"test_sp\"
con.CommandType = 4
con.parameters.append con.createParameter(\"antal\", 3, 2,,3)

set record = con.execute

response.write \"Antal: \" & con.parameters(\"antal\").value & \"<br>\"
response.write \"Antal: \" & con(0)

RS.close
set rs = nothing
set record = nothing

STORED PROCEDURE:
CREATE PROCEDURE dbo.test_sp
    @antal int OUTPUT
AS
SET @antal = 12
GO


Begge steder, hvor jeg skriver @antal ud er den tom?? Hjælp!!
Avatar billede sprocket Nybegynder
09. august 2001 - 16:50 #11
Jeg kan ikke bruge konstanterne adInteger, adParamOutput m.v af en eller anden grund.
Avatar billede sprocket Nybegynder
09. august 2001 - 16:58 #12
Aha,

Hvis jeg laver \'con.execute\' virker det!

men hvis jeg laver \'Set record = con.execute\', virker det ikke. Hvorfor gør den det?
Avatar billede sprocket Nybegynder
09. august 2001 - 17:22 #13
OK, jeg har fundet ud af det.

Recordset\'et skal af en eller anden grund være lukket før con-parameterne kan tilgås.
Avatar billede ditlevsen Nybegynder
09. august 2001 - 17:23 #14
grunden til at du ikke kan bruge konstantnavnene er fordi du ikke har defineret dem i global.asa, men det er heller ikke nødvendigt, som du selv har fundet ud af, da du kan bruge konstantværdierne!

Hvis din stored procedure retunere én værdi skal du bruge:
command.Execute RecordsAffected, Parameters, Options

men hvis den retunere et recordset skal du bruge:
Set recordset = command.Execute( RecordsAffected, Parameters, Options )



Avatar billede -mundi- Nybegynder
25. juni 2003 - 12:25 #15
hvis du vil bruge konstantnavnene kan du sætte denne linie i toppen af din global.asa eller i toppen af det dokument du arbejder med
<!-- METADATA TYPE="typelib" UUID="00000200-0000-0010-8000-00AA006D2EA4" -->
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