/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Stored procedures - returnering af andet e~
Fra : Jesper Stocholm


Dato : 25-04-01 12:01

Jeg har en stored procedure på en SQL-Svr, som laver noget regnearbejde for
mig. Men hvor jeg tidligere har returneret et recordset, så har jeg nu brug
for at kunne returnere en værdi - fx. 1/0 eller /true/false

Hvordan håndterer jeg det i min SP - og specielt: hvordan fanger jeg det
igen på min ASP-side ?

Min SP kaldes ved noget i retning af dette:

EXEC sp1 @id=<id>, @password=<password>

Og SP er indtil videre dette:

CREATE sp1

@id varchar(10),
@password varchar(30)

AS

declare bit int

SELECT
password from table1
WHERE id = @id

if password = @password
bit = 1

return bit

GO

Det er specielt det sidste jeg er usikker på - altså hvordan sammenligner
jeg værdien fra mit recordsæt med en parameter - og derefter sender værdien
af bit tilbage til klienten ?


--
Med venlig hilsen

Jesper Stocholm

 
 
Peter Lykkegaard (25-04-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 25-04-01 15:31


"Jesper Stocholm" <spam@stocholm.dk> wrote in message
news:Xns908E8479CD015spamstocholmdk@130.226.1.34...
> Jeg har en stored procedure på en SQL-Svr, som laver noget regnearbejde
for
> mig. Men hvor jeg tidligere har returneret et recordset, så har jeg nu
brug
> for at kunne returnere en værdi - fx. 1/0 eller /true/false
>
> Hvordan håndterer jeg det i min SP - og specielt: hvordan fanger jeg det
> igen på min ASP-side ?
>
Du skal i gang med command objektet (ADO)
Kik lidt på dette i første omgang

mvh/Peter Lykkegaard



Jesper Stocholm (24-05-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 24-05-01 20:55

Hej Peter

"Peter Lykkegaard" <polonline@hot.mail.com> wrote in <C9BF6.149$dE1.17521
@news.get2net.dk>:

>
>"Jesper Stocholm" <spam@stocholm.dk> wrote in message
>news:Xns908E8479CD015spamstocholmdk@130.226.1.34...
>> Jeg har en stored procedure på en SQL-Svr, som laver noget regnearbejde
>for
>> mig. Men hvor jeg tidligere har returneret et recordset, så har jeg nu
>brug
>> for at kunne returnere en værdi - fx. 1/0 eller /true/false
>>
>> Hvordan håndterer jeg det i min SP - og specielt: hvordan fanger jeg det
>> igen på min ASP-side ?
>>
>Du skal i gang med command objektet (ADO)
>Kik lidt på dette i første omgang
>

Ok ... nu har jeg prøvet at sætte mig ind i ADO Command-objektet - men jeg
er ikke helt blevet så klog, som jeg ønskede.

Det jeg gerne vil er at videreføre to parametre (email char(50), pswd char
(50) ) til en stored procedure - der via nogle opslag i database og diverse
udregninger returnerer enten 1 eller 0 - hhv true eller false.

Som jeg læser informationen på siderne fra
< http://msdn.microsoft.com/library/default.asp?
URL=/library/psdk/dasdk/mdao9mn8.htm>, så kan jeg kalde objektet via noget i
retning af dette

Set objcon = Server.CreateObject("ADODB.Connection")
objcon.Open "PFsqlSvr"

Set objcom = Server.CreateObject("ADODB.Command")
objcom.ActiveConnection = objconn
objcom.CommandText = ???
objcom.Execute

.... men det er nu er jeg usikker ... jeg har kigget på eksempelkoden på

http://msdn.microsoft.com/library/default.asp?
URL=/library/psdk/dasdk/mdae6ph4.htm

.... men jeg er ikke interesseret i at afvikle en SQL-forespørgsel fra
klientsiden ... blot videreføre mine to parametre til SQL-Svr ... og lade
den regne sig frem til enten 1 eller 0

Men hvordan kommer jeg videre ?

pft

--
I have developed an encryption software package that I can best
describe as a ONE-TIME-PAD GENERATOR.
(Anthony Stephen Szopa posting to sci.crypt, August 8, 1997)
- Jesper Stocholm - http://stocholm.dk

Lauritz Jensen (24-05-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 24-05-01 21:24

Jesper Stocholm wrote:
> Ok ... nu har jeg prøvet at sætte mig ind i ADO Command-objektet -
> men jeg er ikke helt blevet så klog, som jeg ønskede.
>
> Det jeg gerne vil er at videreføre to parametre (email char(50),
> pswd char (50) ) til en stored procedure - der via nogle opslag i
> database og diverse udregninger returnerer enten 1 eller 0 - hhv
> true eller false.

Jeg vil nok foreslå at du laver en stored procedure med 3 parametre: 2
input- og 1 outputparameter (det er ikke strengt nødvendigt, med det
skulle give bedre performance).

Prøv så denne kode:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ...
Set Rs = Server.CreateObject("ADODB.Connection")
Set Cmd = Server.CreateObject("ADODB.Command")
Set Cmd.ActiveConnection = Conn

Cmd.CommandType = 4 ' Stored proc
Cmd.CommandText = "navnet_på_din_sp"
Cmd.Parameters.Append Cmd.CreateParameter("email", 200, 1, 50, email)
Cmd.Parameters.Append Cmd.CreateParameter("pswd", 200, 1, 50, pswd)
Cmd.Parameters.Append Cmd.CreateParameter("result", 3, 2, , )
Cmd.Execute
Result = Cmd.Parameters(2)
Cmd.Parameters.Delete(2)
Cmd.Parameters.Delete(1)
Cmd.Parameters.Delete(0)

Set Cmd = Nothing
Set Rs = Nothing
Conn.Close
Set Conn.Close

Mere:
http://support.microsoft.com/support/kb/articles/q164/4/85.asp

--
Lauritz

Jakob Andersen (24-05-2001)
Kommentar
Fra : Jakob Andersen


Dato : 24-05-01 21:31

"Lauritz Jensen" <lauritz2@hotmail.com> wrote in message
news:3B0D6DD2.DBA60AA7@hotmail.com...
> Set Rs = Server.CreateObject("ADODB.Connection")

Hvad laver denne?

--
"No matter how great and destructive your problems may seem now,
remember, you´ve probably only seen the tip of them."



Lauritz Jensen (24-05-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 24-05-01 21:40

Jakob Andersen wrote:
>
> "Lauritz Jensen" <lauritz2@hotmail.com> wrote in message
> news:3B0D6DD2.DBA60AA7@hotmail.com...
> > Set Rs = Server.CreateObject("ADODB.Connection")
>
> Hvad laver denne?

Shhh ... ikke så højt ... vi skal jo se om Jesper er vågen ... men det
ligner sørme en slåfejl (havde jeg mon også glem disclaimeren om at
koden er utestet og yada yada ...?)

--
Lauritz

Jesper Stocholm (25-05-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 25-05-01 09:46

Lauritz Jensen <lauritz2@hotmail.com> wrote in
<3B0D7189.60A6205C@hotmail.com>:

>Jakob Andersen wrote:
>>
>> "Lauritz Jensen" <lauritz2@hotmail.com> wrote in message
>> news:3B0D6DD2.DBA60AA7@hotmail.com...
>> > Set Rs = Server.CreateObject("ADODB.Connection")
>>
>> Hvad laver denne?
>
>Shhh ... ikke så højt ... vi skal jo se om Jesper er vågen ...

... jeg havde ikke nået at kigge på koden før jeg læste Jakobs indlæg
.... men jeg går ud fra, at jeg heller ikke behøver at lukke objeket, når jeg
nu ikke bruger det længere ...

anyway ... det var en god artikel på MSKB - men der er stadig en detalje,
som jeg ikke helt forstår. Jeg har rettet lidt i den kode du gav, så det er
kommet til at se således ud:

Set Cmd = Server.CreateObject("ADODB.Command")
Set Cmd.ActiveConnection = objcon
Cmd.CommandType = 4 ' Stored proc
Cmd.CommandText = "<navn på sp>"
Cmd.Parameters.Append Cmd.CreateParameter("email", 200, 1, 50, str_email)
Cmd.Parameters.Append Cmd.CreateParameter("password", 200, 1, 50,
str_password)
Cmd.Parameters.Append Cmd.CreateParameter("iResult", 3, 2)
Cmd.Execute
Result = Cmd.Parameters(2)
Cmd.Parameters.Delete(2)
Cmd.Parameters.Delete(1)
Cmd.Parameters.Delete(0)

Set Cmd = Nothing
objcon.Close

Når jeg afvikler dette script imod min server, så får jeg følgende fejl

"... Procedure or function <name> has too many arguments specified."

Jeg har vedhæftet min stored-procedure til dette indlæg ... men umiddelbart
ser det ud til, at jeg har gjort det korrekt. Min SP har to input-parametre
og en output-parameter ... hvilket passer til koden ovenfor ...

Hvor er det koen hopper over hegnet ?

--
It is insufficient to protect ourselves with laws; we need to protect
ourselves with mathematics.
(Bruce Schneier)
- Jesper Stocholm - http://stocholm.dk

begin 644 storedprocedure.txt
M0U)%051%(%!23T-%1%5212!L;V=I;@T*0&5M86EL(&-H87(H-3`I+`T*0'!A
M<W-W;W)D(&-H87(H,3`I#0H-"D%3#0I$14-,05)%($!I4F5S=6QT($E.5`T*
M1$5#3$%212!`=&)L7V5M86EL(&-H87(H-3`I#0I$14-,05)%($!T8FQ?<'-W
M9"!C:&%R*#$P*0T*#0I"14=)3B!44D%.4T%#5$E/3@T*"5-%3$5#5"!`=&)L
M7V5M86EL(#T@96UA:6P@1E)/32!T86)L93$@5TA%4D4@96UA:6P@/2!`96UA
M:6P@(`T*"4E&($!T8FQ?96UA:6P@:7,@;G5L;`T*"0DO*B!%;6%I;"!E<B!I
M:VME(&D@9&%T86)A<V5N("HO#0H)"7-E="!`:5)E<W5L="`](#`-"@E%3%-%
M#0H)"4)%1TE.#0H)"0E314Q%0U0@0'1B;%]P<W=D(#T@;60U7W!S=V0@1E)/
M32!T86)L93$@5TA%4D4@96UA:6P@/2!`96UA:6P-"@D)"4E&($!T8FQ?<'-W
M9"`]($!P87-S=V]R9`T*"0D)"2\J($QO9VEN(&5R($]+("HO#0H)"0D)<V5T
M($!I4F5S=6QT(#T@,0T*"0D)14Q310T*"0D)"2\J($QO9VEN(&5R(&EK:V4@
M3TLL(&1A('!A<W-W;W)D<R!I:VME('-T96UM97(@;W9E<F5N<R`J+PT*"0D)
M"7-E="!`:5)E<W5L="`](#(-"@D)14Y$#0I#3TU-250-"E)%5%523B!`:5)E
*<W5L=`T*1T\-"@``
`
end


Lauritz Jensen (25-05-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 25-05-01 15:18

Jesper Stocholm wrote:
> [...]
> Cmd.Parameters.Append _
> Cmd.CreateParameter("email", 200, 1, 50, str_email)
> Cmd.Parameters.Append _
> Cmd.CreateParameter("password", 200, 1, 50, str_password)
> Cmd.Parameters.Append _
> Cmd.CreateParameter("iResult", 3, 2)
> [...]
> Når jeg afvikler dette script imod min server, så får jeg følgende fejl
>
> "... Procedure or function <name> has too many arguments specified."
>
> Jeg har vedhæftet min stored-procedure til dette indlæg ...

Lad være med det. Min normale newsreader, kan ikke forstå vedhæftede
filer, og det er jo i det hele taget ikke flinkt uden for dk.binaer.

> men umiddelbart ser det ud til, at jeg har gjort det korrekt. Min
> SP har to input-parametre og en output-parameter

Nej, den har to parametre (begge input) og så har den en returværdi.
Hvis den havde de tre parametre villle deklerationen se sådan ud:
CREATE PROCEDURE login
@email char(50),
@password char(50),
@result int output
AS ...

Men hvis du vil bruge din procedure, som den ser ud nu skal du ændre
typen på den tredie parameter i asp-koden til:
Cmd.Parameters.Append Cmd.CreateParameter("iResult", 3, 4)
(bemærk, 4-tallet)

Se gerne mere om CREATE PROCEDURE i Sql Server Books Online og om ADO
her:
http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/dasdk/mdao2of9.htm

(og hvad er det for et objekt, du påstår, jeg mangler at lukke i min
kode?)
--
Lauritz

Jesper Stocholm (25-05-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 25-05-01 16:06

Lauritz Jensen <lauritz2@hotmail.com> wrote in
<3B0E69B3.B6B6C29A@hotmail.com>:

>Jesper Stocholm wrote:
>>
>> Jeg har vedhæftet min stored-procedure til dette indlæg ...
>
>Lad være med det. Min normale newsreader, kan ikke forstå vedhæftede
>filer, og det er jo i det hele taget ikke flinkt uden for dk.binaer.
>

point taken ... det vil jeg tage til mig ... min newsreader kunne nu heller
ikke helt håndtere det som jeg havde regnet med ...

>> men umiddelbart ser det ud til, at jeg har gjort det korrekt. Min
>> SP har to input-parametre og en output-parameter
>
>Nej, den har to parametre (begge input) og så har den en returværdi.
>
>Men hvis du vil bruge din procedure, som den ser ud nu skal du ændre
>typen på den tredie parameter i asp-koden til:
> Cmd.Parameters.Append Cmd.CreateParameter("iResult", 3, 4)
>(bemærk, 4-tallet)
>
>(og hvad er det for et objekt, du påstår, jeg mangler at lukke i min
>kode?)

det var lidt en sprogspasme fra min side ... men det jeg refererede til var
linien

Set Rs = Nothing



--
It is insufficient to protect ourselves with laws; we need to protect
ourselves with mathematics.
(Bruce Schneier)
- Jesper Stocholm - http://stocholm.dk

Lauritz Jensen (25-05-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 25-05-01 17:04

Jesper Stocholm wrote:
> Lauritz Jensen <lauritz2@hotmail.com> wrote:
> >(og hvad er det for et objekt, du påstår, jeg mangler at lukke i min
> >kode?)
>
> det var lidt en sprogspasme fra min side ... men det jeg refererede til var
> linien
>
> Set Rs = Nothing

Jamen, det objekt bliver jo aldrig åbnet, så jeg ville få en fejl, hvis
jeg prøvede at lukke det.

--
Lauritz

Jesper Stocholm (25-05-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 25-05-01 17:21

Lauritz Jensen <lauritz2@hotmail.com> wrote in
<3B0E8259.7B38D91@hotmail.com>:

>Jesper Stocholm wrote:
>> Lauritz Jensen <lauritz2@hotmail.com> wrote:
>> >(og hvad er det for et objekt, du påstår, jeg mangler at lukke i min
>> >kode?)
>>
>> det var lidt en sprogspasme fra min side ... men det jeg refererede
>> til var linien
>>
>> Set Rs = Nothing
>
>Jamen, det objekt bliver jo aldrig åbnet, så jeg ville få en fejl, hvis
>jeg prøvede at lukke det.
>

hvilket netop er min pointe (deraf min sporgspamse)... da RS nu ikke længere
åbnes/tillægges værdi - jvf. Jakobs indlæg - så giver det heller ikke mening
at nulstille RS.

Men nu er det blevet fredag ... og naboerne holder grillfest ...

--
It is insufficient to protect ourselves with laws; we need to protect
ourselves with mathematics.
(Bruce Schneier)
- Jesper Stocholm - http://stocholm.dk

Søg
Reklame
Statistik
Spørgsmål : 177556
Tips : 31968
Nyheder : 719565
Indlæg : 6408866
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste