stored procedure call mit asp
volker
- asp.net
0 Frank (no reg)0 volker
0 MelanieK0 volker
hallo zusammen,
ich stehe vor dem problem aus einer asp-seite eine stored procedure einer mssql-datenbank ausführen zu müssen. ich hab noch nie was mit asp gemacht, fische also etwas planlos in der gegend rum...
anyway, hier ist die deklaration der parameter in der stored procedure:
------------------------------------------
CREATE PROC hvs_zellcodierung
@L_STRASSE varchar(50)
,@L_PLZ varchar(6)
,@L_ORT varchar(30)
,@L_HSNR varchar(5)
,@L_DEPOT varchar(5) output
,@L_DEPOTNAME varchar(20) output
,@L_TEZE varchar(4) output
,@L_FCODE varchar(2) output
,@L_VZEIT int output
-------------------------------------------
es gibt also vier input- und fünf output-parameter. oder einfacher gesagt, die prozedur erwartet strasse, plz, ort und hausnummer als eingabe und liefert dafür depot, depotname, teze, fcode und vzeit zurück.
hier ist die belegung der parameter in der asp-seite:
-----------------------------------------------------
...
cmd.Parameters.Append cmd.CreateParameter("@L_DEPOT", adVarChar, adParamReturnValue, 5, "")
cmd.Parameters.Append cmd.CreateParameter("@L_DEPOTNAME", adVarChar, adParamReturnValue, 20, "")
cmd.Parameters.Append cmd.CreateParameter("@L_TEZE", adVarChar, adParamReturnValue, 4, "")
cmd.Parameters.Append cmd.CreateParameter("@L_FCODE", adVarChar, adParamReturnValue, 2, "")
cmd.Parameters.Append cmd.CreateParameter("@L_VZEIT", adInteger, adParamReturnValue, 1, 1)
cmd.Parameters.Append cmd.CreateParameter("@L_STRASSE", adVarChar, adParamInput, 50, "rilkestrasse")
cmd.Parameters.Append cmd.CreateParameter("@L_PLZ", adVarChar, adParamInput, 6, "73728")
cmd.Parameters.Append cmd.CreateParameter("@L_ORT", adVarChar, adParamInput, 30, "Esslingen")
cmd.Parameters.Append cmd.CreateParameter("@L_HSNR", adVarChar, adParamInput, 5, "2")
cmd.Execute
...
-------------------------------------------------------------------
(die direkte zuweisung von werten dient erstmal zum testen)
ich erhalte folgende fehlermeldung:
-------------------------------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers Fehler "80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Der formale @L_STRASSE-Parameter wurde als OUTPUT definiert, der tatsächliche Parameter jedoch nicht als OUTPUT deklariert.
/test3.asp, line 27
--------------------------------------------------------------------
ich verstehs nicht. wo bitte wird @L_STRASSE als output-parameter deklariert??? ausserdem: wenn ich die prozedur von hand auf der shell ausführe gibts keine probleme.
kann von euch jemand damit was anfangen?
gruss aus berlin, volker
Hi,
jeder hat mal angefangen :-)
Eine T-SQL SP hat _IMMER_ _NUR_ _EINEN_ ReturnValue. Du hast die ParameterDirection mit adParamReturnValue angegeben. Da sollte adParamOutput stehen.
... ich verstehs nicht. wo bitte wird @L_STRASSE als output-parameter deklariert???
evt. hier: (wenn's da auch drin stehen würde)
Sicher dass du die Bereiche copy&past so eingeführt hast, wie sie auch _ausgeführt_ werden? Nicht dass da der Hund im Verborgenem liegt.
,@L_DEPOT varchar(5) output
,@L_DEPOTNAME varchar(20) output
,@L_TEZE varchar(4) output
,@L_FCODE varchar(2) output
,@L_VZEIT int output
Das ist auch richtig so für die Definition der SP, weil sonst kommst du an die Daten ja nicht wieder ran. Allerdings war dein ADO Code falsch (falsche Parameter-Richtungsangabe).
HTH, Ciao, Frank
hi frank,
leider ändert sich nichts wenn ich die rückgabewerte als adParamOutput definiere.
Sicher dass du die Bereiche copy&past so eingeführt hast, wie sie auch _ausgeführt_ werden?
ja, ganz sicher. wenn du lust hast kann ich gerne auch mal den gesamten stored procedure- und asp-code posten.
hast du evtl. noch ein andere idee?
gruss aus berlin, volker
hallo,
ich verstehs nicht. wo bitte wird @L_STRASSE als output-parameter deklariert??? ausserdem: wenn ich die prozedur von hand auf der shell ausführe gibts keine probleme.
Die Parameter auf der ASP Seite muessen in exakt der gleichen Reihenfolge stehen wie in der StoredProc.
Die Namen der Parameter sind hierbei unerheblich, MSSQL kriegt als erstes einen ReturnValue (@L_Depot) geliefert, versucht das fuer @L_Strasse in der Stored Proc zu verwenden, und wirft dann natuerlich einen Fehler aus.
Gruss,
Melanie
hi melanie,
Die Parameter auf der ASP Seite muessen in exakt der gleichen Reihenfolge stehen wie in der StoredProc.
argh!!! da hätte ich selbst drauf kommen können. du hast mir den tag gerettet, 1000 dank dafür!
gruss aus berlin, volker