ここに私の手続きがあります:
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 が新しいユーザーを追加するときは常に失敗しますが、既存のユーザーが戻ると正常に動作します。挿入を行ったときにレコードが返されない理由は何ですか?