私はオプションの入力パラメータと、このような出力パラメータを持つSQL Server 2008 R2のデータベースにストアドプロシージャを持っている:ADODBはオプションの入力パラメータで出力パラメータに失敗しますか?
CREATE PROCEDURE [dbo].[spCreateTicket]
(
@TrackingCode varchar(25),
@EmailAddress varchar(250) = null,
@Ticket varchar(1000),
@UserID int,
@TicketID int output
)
AS
SET NOCOUNT ON
INSERT INTO dbTicket (TrackingCode, EmailAddress, Ticket, UserID)
SELECT
@TrackingCode, @EmailAddress, @Ticket, @UserID
SELECT @TicketID = SCOPE_IDENTITY()
RETURN @TicketID
私はSSMSでオプションのパラメータを指定しないでストアドプロシージャを呼び出すと、それが正常に動作します:
DECLARE @TicketID int
EXEC [dbo].[spCreateTicket]
@TrackingCode = 'xOCDUv289u403k5h24s5869vK',
@Ticket = 'Something broke!',
@UserID = 64307,
@TicketID = @TicketID OUTPUT
しかし、私はこのようなASPの古典でADODBて同じことをしてみてください。
SET cmd = Server.CreateObject ("ADODB.Command")
cmd.ActiveConnection = HelpDeskConnection
cmd.CommandText = "spCreateTicket"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter ("@TrackingCode",adVarChar,adParamInput,25,RandomString(25))
cmd.Parameters.Append cmd.CreateParameter ("@Ticket",adVarChar,adParamInput,1000,Ticket)
cmd.Parameters.Append cmd.CreateParameter ("@UserID",adInteger,adParamInput, ,Session("UserID"))
cmd.Parameters.Append cmd.CreateParameter ("@TicketID",adInteger,adParamOutput)
cmd.Execute
TicketID = cmd.Parameters("@TicketID")
それは何もしない、@TicketID
はEmpty
を残しており、ADODB.Connectionのは、このNativeErrorに8162が含まれています
ユーザーID \「は。OUTPUT パラメータが、要求された出力に渡される実際のパラメータとして宣言されていない」@「\仮引数」
私はADODBを使用して、オプションのパラメータを付けずにストアドプロシージャを呼び出すことができます。これはADODBの既知の欠陥ですか、あるいは出力パラメータがあるときに動作させるために何か特別な処理を行う必要がありますか?