这是我的C#语句,调用存储过程[UserInfoProc]
protected void Create_Click(object sender, EventArgs e)
{
//提交创建用户
string powerID = "000,001"; //测试权限,根据复选框组合
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectDataBase"].ConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand("UserInfoProc", conn);
//给传给存储过程的参数定义、赋值
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@USERNAME",SqlDbType .VarChar ,50) {Value = this.UserName.Text.ToString()},
new SqlParameter("@DEPARTID",SqlDbType .VarChar ,20) {Value = this.Depart.SelectedValue.ToString()},
new SqlParameter("@POWERID",SqlDbType .VarChar ,200) {Value = powerID},
new SqlParameter("@NAME",SqlDbType .VarChar ,50) {Value = this.Name.Text.ToString()},
new SqlParameter("@Return",SqlDbType.Int),
};
param[4].Direction = ParameterDirection.ReturnValue;
param[4].Direction = ParameterDirection.Output;
foreach (SqlParameter parameter in param)
{
cmd.Parameters.Add(parameter);
}
cmd.ExecuteNonQuery();
string ret = cmd.Parameters["@Return"].Value.ToString();
conn.Close();
}
存储过程内容
USE [CapManagementSys]
GO
/****** Object: StoredProcedure [dbo].[UserInfoProc] Script Date: 2015/5/16 11:18:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*用户信息--新增、修改 */
ALTER PROCEDURE [dbo].[UserInfoProc]
@USERNAME varchar(50),
@DEPARTID varchar(20),
@POWERID varchar(200),
@NAME varchar(50),
@Return int output
AS
DECLARE @PASSWORD varchar(100) = '41F212FBA540D6C3'
SET @Return = 0
BEGIN
DECLARE @COUNT INT = 0
SELECT @COUNT=@@ROWCOUNT FROM UserInfo A WHERE A.USERNAME = @USERNAME
IF (@COUNT != 0)
BEGIN
SET @Return = -2
END
ELSE
BEGIN
INSERT INTO UserInfo(USERNAME,PASSWORD,DEPARTID,POWERID,NAME) VALUES(@USERNAME,@PASSWORD,@DEPARTID,@POWERID,@NAME)
END
END
跟踪出来的数据库查询语句是:
declare @p7 int
set @p7=NULL
exec sp_executesql N'UserInfoProc',N'@USERNAME varchar(50),@DEPARTID varchar(20),@POWERID varchar(200),@NAME varchar(50),@Return int output',@USERNAME='123',@DEPARTID='04',@POWERID='000,001',@NAME='123',@Return=@p7 output
select @p7
但是查询报错:
消息 201,级别 16,状态 4,过程 UserInfoProc,第 0 行
过程或函数 'UserInfoProc' 需要参数 '@USERNAME',但未提供该参数。
请问各位大神我哪里出错了呢。。谢谢~
------解决思路----------------------
这样,命令类型不对
cmd.CommandType = System.Data.CommandType.StoredProcedure;