[mssql 2005] sp OUTPUT parameters zonder ADODB.command?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bunkerbuster
  • Registratie: Januari 2010
  • Laatst online: 25-08 19:45
Is het mogelijk om een stored procedure aan te roepen en output parameters terug te krijgen zonder dat ik gebruik maar van het Command Object?

De stored procedure ziet ongeveer zo uit
SQL:
1
2
3
4
5
6
7
8
9
10
11
CREATE PROCEDURE [dbo].[uspGETDATA]
--Parameter in
@pWAARDEIN varchar(50)  = NULL,
--Paramter uit
@rpWAARDEUIT varchar(50) OUTPUT
AS
SELECT
@rpWAARDEUIT  = kolomwaarde2
FROM TABLE
WHERE
kolomwaarde1 = @pWAARDEIN


En deze geeft een goede waarde terug als ik deze via de adob.command wijze aanroep.

VBScript:
1
2
3
4
5
6
7
8
9
set cmd = server.CreateObject("ADODB.command")
With cmd
  .ActiveConnection = cn
  .CommandText="uspGETDATA"
  .Commandtype = adCmdStoredProc
  .Parameters.Append .CreateParameter("@pWAARDEIN ",adVarChar, adParamInput, 50,"TEST")
  .Parameters.Append .CreateParameter("@rpWAARDEUIT",adInteger, adParamOutput)
  .Execute ,,adExecuteNoRecords
End With



Maar Omdat MS eigenlijk zelf het gebruik van adob.command afraad vroeg ik mij af of dit ook op een andere wijze kan (eigenlijk zijn alle voorbeelden op het internet met het gebruik van adob.command). normaal als ik een SP wil uitlezen kan ik dat ook doen zonder dat ik adob.command gebruik en dan kan ik de parameters als volgt meegeven
uspGETDATA @pWAARDEIN = "TEST"

Echter dit trucje gaat niet op voor de output parameter. Als iemand mij zou kunnen helpen zou dat heel fijn zijn.
uspGETDATA @pWAARDEIN = "TEST", @rpWAARDEUIT OUT
uspGETDATA @pWAARDEIN = "TEST", @rpWAARDEUIT OUTPUT
uspGETDATA @pWAARDEIN = "TEST", @rpWAARDEUIT VARCHAR(50) OUT
uspGETDATA @pWAARDEIN = "TEST", @rpWAARDEUIT VARCHAR(50) OUTPUT
uspGETDATA @pWAARDEIN = "TEST", @rpWAARDEUIT = @rpWAARDEUIT OUT
uspGETDATA @pWAARDEIN = "TEST", @rpWAARDEUIT = @rpWAARDEUIT OUTPUT
uspGETDATA @pWAARDEIN = "TEST", @rpWAARDEUIT = @rpWAARDEUIT VARCHAR(50) OUT
uspGETDATA @pWAARDEIN = "TEST", @rpWAARDEUIT = @rpWAARDEUIT VARCHAR(50) OUTPUT

Acties:
  • 0 Henk 'm!

Verwijderd

Maak je gebruik van ASP?

Voor zover ik het zie is het dus een probleem in je code?
Want de stored procedure is voorzien van de juiste output parameter, en deze output parameter wordt ook op de juiste manier voorzien van een waarde. Daar ligt het probleem in ieder geval niet.

Ik heb van dezelfde situatie gebruik gemaakt in VB6, en daar werkte dit wel. Misschien dat het onmogelijk is in combinatie met VBScript?

EDIT:
In het volgende linkje wordt trouwens een case uitgewerkt om output parameters te gebruiken in combinatie met VBScript. Volgens mij moet het gewoon kunnen:
MSDN: Make ADO Work Faster Using Output Parameters in Your Stored Procedures

[ Voor 27% gewijzigd door Verwijderd op 25-03-2011 10:19 ]


Acties:
  • 0 Henk 'm!

  • TallManNL
  • Registratie: Oktober 2005
  • Laatst online: 13:22
Bunkerbuster schreef op donderdag 24 maart 2011 @ 16:03:

Maar Omdat MS eigenlijk zelf het gebruik van adob.command afraad vroeg ik mij af of dit ook op een andere wijze kan (eigenlijk zijn alle voorbeelden op het internet met het gebruik van adob.command).
Dat heb ik eigenlijk nooit gehoord, heb je daar ook een bron van?

geheelonthouder met geheugenverlies


Acties:
  • 0 Henk 'm!

  • Bunkerbuster
  • Registratie: Januari 2010
  • Laatst online: 25-08 19:45
@TallManNL
Helemaal onderaan de pagina staat het volgende ,
"•The Command object is not safe for scripting."
MSDN: Command Object

Er staat op MSDN nog een uitgebreider artikel alleen dat kan ik even niet terugvinden, het is alweer een hele tijd geleden dat ik dit heb gelezen.

@Detroit
Het artikel wat je aanhaalt heb ik ook gebruikt als uitgangspunt :) (wel een beetje verouderd, maar het werkt wel). Maar je begrijpt niet helemaal wat ik wil. In het artikel wordt gebruik gemaakt van het Command object, als je de titel leest van mijn verzoek, staat er heel duidelijk dat mijn vraag is of dit ook ZONDER het command object kan en zo ja hoe dan.

Parameters meezenden met een SP gaat prima zonder het command object. Maar zodra ik een parameter OUTPUT probeer mee te zenden kom ik niet om het command object heen :(

Acties:
  • 0 Henk 'm!

Verwijderd

Bunkerbuster schreef op zondag 27 maart 2011 @ 14:24:
@TallManNL
Helemaal onderaan de pagina staat het volgende ,
"•The Command object is not safe for scripting."
MSDN: Command Object

Er staat op MSDN nog een uitgebreider artikel alleen dat kan ik even niet terugvinden, het is alweer een hele tijd geleden dat ik dit heb gelezen.

@Detroit
Het artikel wat je aanhaalt heb ik ook gebruikt als uitgangspunt :) (wel een beetje verouderd, maar het werkt wel). Maar je begrijpt niet helemaal wat ik wil. In het artikel wordt gebruik gemaakt van het Command object, als je de titel leest van mijn verzoek, staat er heel duidelijk dat mijn vraag is of dit ook ZONDER het command object kan en zo ja hoe dan.

Parameters meezenden met een SP gaat prima zonder het command object. Maar zodra ik een parameter OUTPUT probeer mee te zenden kom ik niet om het command object heen :(
Volgens mij is het commando object het de facto te gebruiken object om interactie te hebben met een SQL Server database als je gebruik maakt van VBscript of VB 6. Er is geen reden om het niet te gebruiken.

Jij zegt dat je het niet wilt gebruiken omdat het volgens MSDN "not safe for scripting" is, alleen is het onzinnig om je besluit daarop te baseren. Zie het volgende linkje: http://stackoverflow.com/...cript-asp-classic-and-ado

Acties:
  • 0 Henk 'm!

  • Bunkerbuster
  • Registratie: Januari 2010
  • Laatst online: 25-08 19:45
@Detroit, kun je svp on topic blijven.
Je doet een aantal boute uitspraken die ongefundeerd zijn en enige irritatie aan mijn kant oproepen.
Het is namelijk mijn besluit om iets wel of niet te gaan doen. Zonder alle feiten te kennen zou ik zelf nooit een dergelijke mening aan iemand opdringen!

Acties:
  • 0 Henk 'm!

Verwijderd

Bunkerbuster schreef op maandag 28 maart 2011 @ 20:18:
@Detroit, kun je svp on topic blijven.
Je doet een aantal boute uitspraken die ongefundeerd zijn en enige irritatie aan mijn kant oproepen.
Het is namelijk mijn besluit om iets wel of niet te gaan doen. Zonder alle feiten te kennen zou ik zelf nooit een dergelijke mening aan iemand opdringen!
Ik ben on-topic, maar goed. Veel succes met het zoeken naar je antwoord!
Pagina: 1