Thread View: dk.edb.internet.webdesign.serverside.asp
3 messages
3 total messages
Started by Leif Neland
Wed, 11 Jan 2012 13:42
prepared query og funktioner (Stig Johansens funktion :-)
Author: Leif Neland
Date: Wed, 11 Jan 2012 13:42
Date: Wed, 11 Jan 2012 13:42
54 lines
2869 bytes
2869 bytes
Classic asp, sqlserver 2008R2, Stig Johansens parameterized query-funktion.
Jeg har et problem med at kalde en
Jeg har en user-defined sql-funktion, der returnerer en tabel:
check_gavekort(@id int,@pin) returns table
F.ex. check_gavekort(123,456)
Den naive metode virker:
set rs=conn.execute("select * from
dbo.gavekort_check("&request.form("Kortnummer")&","&request.form("Pin")&")")
Men jeg ville gerne bruge parametized queries.
set rs=st_query(conn,"select * from
dbo.gavekort_check(?,?)",array(request.form("Kortnummer"),request.form("Pin")),2)
Det fejler imidlertid i denne linie:
cmd(Counter).type = 12 ' adVariant
med fejlen "0x80004005 Syntax error or access violation"
Derimod fungerer
set rs=st_query(conn,"select * from gavekort where id=? and
pin=?",array(request.form("Kortnummer"),request.form("Pin")),2)
S� hvorledes f�r jeg s� proppet mine variable ind i funktionen?
Jeg bruger Stig Johansens funktion:
Function st_query(connection, SQL, Parameters,Paramcount)
if Paramcount = -1 then Paramcount = uBound(Parameters) + 1
Dim cmd, Counter , isSelect , RowsAffected
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = connection
cmd.CommandType = 1 ' adCmdText
cmd.CommandText = SQL
IF lcase(left(ltrim(SQL),6)) = "select" then
isSelect = true
else
isSelect = false
end if
For Counter = 0 To Paramcount - 1
cmd(Counter).type = 12 ' adVariant
cmd(Counter).value = Parameters(Counter)
Next
if isSelect then
Set st_query = cmd.Execute
else
cmd.Execute RowsAffected,,-1 ' adOptionUnspecified
if Err <> 0 then RowsAffected = -1
st_query = RowsAffected
on error goto 0
end if
End Function
Re: prepared query og funktioner (Stig Johansens funktion :-)
Author: Leif Neland
Date: Wed, 11 Jan 2012 14:40
Date: Wed, 11 Jan 2012 14:40
29 lines
2335 bytes
2335 bytes
"Leif Neland" <leif@neland.dk> skrev i en meddelelse
news:4f0d91b8$0$282$14726298@news.sunsite.dk...
> Classic asp, sqlserver 2008R2, Stig Johansens parameterized
> query-funktion.
>
> Jeg har et problem med at kalde en
> Jeg har en user-defined sql-funktion, der returnerer en tabel:
> check_gavekort(@id int,@pin) returns table
>
> Men jeg ville gerne bruge parametized queries.
> set rs=st_query(conn,"select * from
> dbo.gavekort_check(?,?)",array(request.form("Kortnummer"),request.form("Pin")),2)
> Det fejler imidlertid i denne linie:
> cmd(Counter).type = 12 ' adVariant
> med fejlen "0x80004005 Syntax error or access violation"
Der bliver �benbart ikke lavet nogle parametre ud af ?'erne, n�r queryet er
en funktion, i mods�tning til n�r det bare er en almindelig sql-s�tning.
S� ved at lave l�kken, der s�tter parametrene om, lykkedes det:
For Counter = 0 To Paramcount - 1
' IKKE
'cmd(Counter).value = Parameters(Counter)
'cmd(Counter).type = Paramtypes(Counter)
' MEN
cmd.parameters.Append
cmd.CreateParameter("",Paramtypes(Counter),adParamInput,,Parameters(Counter))
Next
Re: prepared query og funktioner (Stig Johansens funktion :-)
Author: Stig Johansen
Date: Tue, 17 Jan 2012 10:17
Date: Tue, 17 Jan 2012 10:17
20 lines
1811 bytes
1811 bytes
Leif Neland wrote:
>> set rs=st_query(conn,"select * from
>>
dbo.gavekort_check(?,?)",array(request.form("Kortnummer"),request.form("Pin")),2)
>
> Der bliver �benbart ikke lavet nogle parametre ud af ?'erne, n�r queryet
Jeg er rimelig sikker p� jeg har haft nogle 'sm�problemer', n�r der ikke har
v�ret adskillelse mellem ?-tegnene.
Husker ikke de pr�cise omst�ndigheder, men de problemer jeg har haft blev
l�st med en 'blank-' mellem tegnene.
Jeg mener ogs� det var noget ged hvis s�tniongen slutterde med ?, s� der
satte jeg ogs� en ekstra blank ind.
--
Med venlig hilsen
Stig Johansen
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads