-1

イライラする質問があり、ググってググったのですが、欲しいものが見つかりません。

私はこの SQL Server ストアド プロシージャを持っています。これはうまく機能し、一意の識別子を返します。

ALTER PROCEDURE [dbo].[mcd_AddLogin]
   @UserName         nvarchar(256),
   @Password         nvarchar(256),
   @UID              uniqueidentifier OUTPUT
AS
BEGIN
   IF( @UID IS NULL )
        SELECT @UID = NEWID()
   ELSE
   BEGIN
       IF( EXISTS( SELECT [USERNAME] FROM dbo.LoginPassing_Active) )
          RETURN -1
   END

Declare @Active bit
Declare @Exp_Date datetime
Set @Active = 1
Set @Exp_Date =  DATEADD(mi, 1, GETDATE())

INSERT dbo.LoginPassing ([USERNAME], [PASSWORD], [ACTIVE], [EXP_DATE], [UID])
VALUES (@UserName, @Password, @Active, @Exp_Date, @Uid)

RETURN 0
END

これを ASP.NET アプリケーションで使用しようとすると、次のエラーが発生します。

プロシージャまたは関数 'mcd_AddLogin' には、指定されていないパラメーター '@UID' が必要です。

以下は私のASP.Netアプリケーションのコードです。誰かが間違っていることを解決するのを手伝ってくれますか?私はそれが本当に単純で、トリックを逃しただけだと確信しています:

    Dim conSQL As New SqlConnection
    conSQL.ConnectionString = My.Settings.conSQL
    conSQL.Open()

    Dim comSQL As New SqlCommand

    comSQL.Connection = conSQL
    comSQL.CommandText = "mcd_AddLogin"
    comSQL.CommandType = CommandType.StoredProcedure
    comSQL.Parameters.Add("@Username", SqlDbType.NVarChar).Value = "username"
    comSQL.Parameters.Add("@Password", SqlDbType.NVarChar).Value = "password"

    comSQL.ExecuteNonQuery()
    litAD.Text = comSQL.Parameters("@UID").Value

あらかじめご了承ください。

ありがとう、スティーブ

4

3 に答える 3

6

ストアド プロシージャ出力パラメータがある場合は、そのパラメータを指定する必要があります。SP の実行後、パラメータから出力値を取得できます。

これを試して:

comSQL.Parameters.Add("@Password", SqlDbType.NVarChar).Value = "password"
comSQL.Parameters.Add("@UID", SqlDbType.Int)
comSQL.Parameters("@UID").Direction = ParameterDirection.Output
comSQL.ExecuteNonQuery()
litAD.Text = comSQL.Parameters("@UID").Value
于 2013-03-01T16:34:40.020 に答える
0

Parameter Direction呼び出す前に、スペースを空けて渡す必要があります ExecuteNonQuery()

例えば

myParm.Direction = ParameterDirection.Output

入力パラメータと出力パラメータの詳細をお読みください

于 2013-03-01T16:34:05.987 に答える
0

私は間違ったことをグーグルで調べていたことが判明しました-私はOUTPUTパラメータが欲しかったので、以下のコードで問題を解決しました:

    comSQL.Connection = conSQL
    comSQL.CommandText = "mcd_AddLogin"
    comSQL.CommandType = CommandType.StoredProcedure
    comSQL.Parameters.Add("@Username", SqlDbType.NVarChar).Value = "spearce"
    comSQL.Parameters.Add("@Password", SqlDbType.NVarChar).Value = "kintikai"
    comSQL.Parameters.Add("@UID", SqlDbType.UniqueIdentifier)
    comSQL.Parameters("@UID").Direction = ParameterDirection.Output
    comSQL.ExecuteNonQuery()
    litAD.Text = comSQL.Parameters("@UID").Value

とにかく助けてくれてありがとう。

于 2013-03-01T16:38:43.747 に答える