1

ここに私の手続きがあります:

 ALTER PROCEDURE [dbo].[insert_user]
        @username varchar(50)
     AS
     BEGIN
        IF EXISTS(SELECT userid FROM users WHERE username = @username)
            SELECT userid FROM users WHERE username = @username
        ELSE
            BEGIN
                INSERT INTO users (username) VALUES (@username)
                SELECT userid FROM users WHERE username = @username
            END
     END

ここに私のVBAがあります

Public userid As Integer
    Public dbconn As ADODB.Connection

Public Function Startup()
    Dim cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset
    Dim param As New ADODB.Parameter

    Set dbconn = New ADODB.Connection
    dbconn.ConnectionString = "[redacted]"
    dbconn.Open dbconn.ConnectionString

    Set cmd = New ADODB.Command
    cmd.ActiveConnection = dbconn
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "insert_user"

    Set param = cmd.CreateParameter("username", adVarChar, adParamInput, 50, Environ("UserDomain") & "dddddddd\" & Environ("Username"))
    cmd.Parameters.Append param

    rs.CursorType = adOpenStatic
    rs.CursorLocation = adUseClient
    rs.LockType = adLockOptimistic
    rs.Open cmd

    MsgBox (rs("userid"))
End Function

proc が新しいユーザーを追加するときは常に失敗しますが、既存のユーザーが戻ると正常に動作します。挿入を行ったときにレコードが返されない理由は何ですか?

4

1 に答える 1

1

この投稿が役立つかもしれません: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=62936

したがって、実際には、ストアド プロシージャに 1 行追加するだけです。

...
SET NOCOUNT ON
...
于 2012-05-18T23:36:54.227 に答える