Skinnysite.net

... un modo di esprimersi.

Font Size

Cpanel

Stampare la chiamata di una stored procedure di sql server

Valutazione attuale:  / 0
ScarsoOttimo 

Talvolta per ragioni di debug, si rende necessario stampare la chiamata di un store procedure per poi farla girare dentro il query analyzer o il management studio di sql server e per quanto mi riguarda, mi ero stancato di scrivere sempre le solite "response.write". Quindi ho fatto questa piccola funzione a cui si passa un "adodb.command" già pronto e questa restituisce la stringa della chiamata per sql server. Al momento la funzione prende in considerazione solo i parametri di input e di output ma non i parametri di ritorno delle store procedure pertanto in caso si volesse chiamare una procedura che richiede la lettura dei valori di ritorno, questa funzione deve essere modificata.

function writeStoreProcedure(cmd)
dim prmValue, commandTextValue, prmValueList, declaration, prmName, s

'con un po' replace ripulisco il la proprietà CommandText
commandTextValue = replace(cmd.CommandText, "{ call ", "")
commandTextValue = replace(commandTextValue, "?", "")
commandTextValue = replace(commandTextValue, ",", "")
commandTextValue = replace(replace(commandTextValue, "(", ""), ")", "")
commandTextValue = replace(commandTextValue, "}", "")
commandTextValue = "exec " & Trim(commandTextValue)

'ciclo su i parametri presenti nel comando della procedura
for each prm in cmd.parameters
prmValue = prm.value

'controllo quelli che sono di tipo stringa e gli metto gli apici
select case prm.type
case adChar, adVarChar, adWChar, adLongVarChar, adVarWChar, adLongVarWChar
'se ho dei parametri di output faccio anche dichiarazione per sql server e aggiungo il parametro alla lista
if prm.Direction = adParamOutput then
prmName = replace(prm.name, "@", "")
declaration = declaration & "declare @" & prmName & " nvarchar(4000)" & vbNewLine
prmValue = " @" & prmName & " output,"
else
prmValue = " '" & prmValue & "',"
end if
prmValueList = prmValueList & prmValue
case else
if prm.Direction = adParamOutput then
prmName = replace(prm.name, "@", "")
declaration = declaration & "declare @" & prmName & " bigint" & vbNewLine
prmValue = " @" & prmName & " output,"
else
prmValue = " " & prmValue & ","
end if
prmValueList = prmValueList & prmValue

end select
next

s = declaration & commandTextValue & prmValueList
writeStoreProcedure = left(s, len(s)-1)
end function

 

Sei qui: Home Code Snippets ASP Classic Stampare la chiamata di una stored procedure di sql server