Jag anropar en StoreProcedure i en Oracle databas. Varför anropar du inte functionen inut din SP eller gör konverteringen i din ASP sida? StoreProceduren finns sedan gammalt i databasen. Skulle vi uppdatera den skulle det krävas att en mängd klienter måste bytas ut. Som alternativ kan vi skapa en ny, nästan exakt likadan SP, men det känns lite onödigt då det redan finns en, eller hur? :) Jag chansar på att det är det som strular. Att den bara aqccepterar parametervärden. Hmm, vad den får för datatyp? Hur menar du? Hur ser jag det?Anropa en SP
Nu har jag dock träffat på ett problem.
Kod som funkar:
<code>
sql = "{ ? = call func(?,?,?,?) }"
set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = OBJdbConnection
cmd.commandText = sql
cmd.commandType = adCmdText
cmd.Parameters.Append cmd.CreateParameter("retval", adInteger, adParamReturnValue)
cmd.Parameters.Append cmd.CreateParameter("@radid", adVarChar, adParamInput, 40, Request.Form("radid")(i))
cmd.Parameters.Append cmd.CreateParameter("@returdatum", adDate, adParamInput, ,Request.Form("returdatum")(i))
cmd.Parameters.Append cmd.CreateParameter("@returantal", adInteger, adParamInput, ,Request.Form("antal")(i))
cmd.Parameters.Append cmd.CreateParameter("@lagerplats", adVarChar, adParamInput, 7,Request.Form("arbplats")(i))
cmd.execute
retValue = cmd("retval")
if cInt(retValue) = 0 then
errorMessage = "felmeddelande"
end if
Set cmd = nothing
</code>
Eftersom oracles Rowid kan innehålla lite knepiga tecken, så måste man översätta den till char och från char (rowidToChar samt charTorowid)
Men när jag gör detta får jag felmeddelande.
<code>
sql = "{ ? = call func(charToRowid(?),?,?,?) }"
</code>
Felmeddelande
<code>
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Oracle][ODBC][Ora]ORA-04043: objektet chartorowid finns inte
/proflex/modifyavtal.asp, line 128
</code>Sv: Anropa en SP
Sv: Anropa en SP
Att göra om den i ASP funkar ju inte riktigt, då jag tror att de felen som kan bli när man hanterar en ren rowid kan hända då man hanterar den. Grejjen är att en rowid kan innehålla en massa konstiga tecken, och eftersom jag inte vet exakt vilka, vet jag inte om ASP klarar av det. Om t.ex. ETX kommer eller liknande, kan jag tänka mig att det ställer till det i ASP, även fast man skriver det direkt från ett resultset in i en Command.
Men jag kanske har fel?
Menar du att det inte går att skriva sina egna taggar runt "?"-tecknen?Sv: Anropa en SP
Om du gör en parameters.Refresh. Vad får den då för datatyp? Sv: Anropa en SP
RED: När ja la in en refresh innan execute så fick jag detta felmeddelande:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC-drivrutinen stöder inte de begärda egenskaperna.