存储过程不 return 输出
Stored procedure doesn't return output
我有一个简单的存储过程,它在 table 中插入一条用户记录,并且应该给出它的用户 ID。
存储过程如下:
Alter proc spRegistration
@UserId nvarchar(10) output,
@Name nvarchar(20),
@EmailAdd nvarchar(20)
as
begin
Declare @Count int;
Declare @ReturnCode int
Select @Count = Count(EmailAdd)
from tblAllUsers
where EmailAdd = @EmailAdd
if @Count > 0
begin
Set @ReturnCode = -1
end
else
begin
Set @ReturnCode = 1
Insert into tblAllUsers(Name, EmailAdd)
values(@Name, @EmailAdd)
end
Select @UserId = UserId
from tblAllUsers
where EmailAdd = @EmailAdd
Select @ReturnCode as ReturnCode
end
我尝试将 userid
放入如下所示的文本框中:
string CS = ConfigurationManager.ConnectionStrings["hh"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
SqlCommand cmd = new SqlCommand("spRegistration", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@EmailAdd", txtEmailAddress.Text);
var UserID = cmd.Parameters.AddWithValue("@UserId", SqlDbType.NVarChar);
UserID.Direction = ParameterDirection.Output;
int ReturnCode = (int)cmd.ExecuteScalar();
if (ReturnCode == -1)
{
lblRegMessage.Text = "This email has already been registered with us.";
}
else
{
lblRegMessage.Text = "You were registered successfully.";
txtUserId.Text=(String)UserID.Value;
}
table以及存储过程太复杂了,我简化了它以便更好地理解problem.UserId是Alphanumeric.Dont担心的
放置一个断点显示 var UserID 为空
我哪里错了?
您需要在 UserID
上使用 .ToString()
txtUserId.Text= UserID.Value.ToString();
编辑:
var UserID = cmd.Parameters.AddWithValue("@UserId", SqlDbType.NVarChar,50);
我有一个简单的存储过程,它在 table 中插入一条用户记录,并且应该给出它的用户 ID。
存储过程如下:
Alter proc spRegistration
@UserId nvarchar(10) output,
@Name nvarchar(20),
@EmailAdd nvarchar(20)
as
begin
Declare @Count int;
Declare @ReturnCode int
Select @Count = Count(EmailAdd)
from tblAllUsers
where EmailAdd = @EmailAdd
if @Count > 0
begin
Set @ReturnCode = -1
end
else
begin
Set @ReturnCode = 1
Insert into tblAllUsers(Name, EmailAdd)
values(@Name, @EmailAdd)
end
Select @UserId = UserId
from tblAllUsers
where EmailAdd = @EmailAdd
Select @ReturnCode as ReturnCode
end
我尝试将 userid
放入如下所示的文本框中:
string CS = ConfigurationManager.ConnectionStrings["hh"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
SqlCommand cmd = new SqlCommand("spRegistration", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@EmailAdd", txtEmailAddress.Text);
var UserID = cmd.Parameters.AddWithValue("@UserId", SqlDbType.NVarChar);
UserID.Direction = ParameterDirection.Output;
int ReturnCode = (int)cmd.ExecuteScalar();
if (ReturnCode == -1)
{
lblRegMessage.Text = "This email has already been registered with us.";
}
else
{
lblRegMessage.Text = "You were registered successfully.";
txtUserId.Text=(String)UserID.Value;
}
table以及存储过程太复杂了,我简化了它以便更好地理解problem.UserId是Alphanumeric.Dont担心的
放置一个断点显示 var UserID 为空 我哪里错了?
您需要在 UserID
.ToString()
txtUserId.Text= UserID.Value.ToString();
编辑:
var UserID = cmd.Parameters.AddWithValue("@UserId", SqlDbType.NVarChar,50);