请问如何向存储过程传递内容并且获得返回值?急,在线给分!
我做了一个存储过程,代码如下:
-----------------------------------------------------
CREATE PROCEDURE [AddNewProj]
(@proj_ID [char](50), @proj_Name [char](100), @proj_Add [char](200),
@proj_tel1 [char](50),@proj_tel2 [char](50), @proj_tel3[char](50), @proj_owner[char](100),
@proj_money [char](50), @proj_cont[char](500),@backErr integer output)
AS
IF EXISTS (SELECT * FROM t_project WHERE proj_ID=@proj_ID)
/*检查,如用户输入的ID数据库已经有,则返回2 */
BEGIN
SELECT @backErr=2
END
Else
BEGIN
INSERT INTO [sanxing].[dbo].[t_project]
( [proj_ID],
[proj_Name],
[proj_Add],
[proj_tel1],
[proj_tel2],
[proj_tel3],
[proj_owner],
[proj_money],
[proj_cont])
VALUES
( @proj_ID,
@proj_Name,
@proj_Add,
@proj_tel1,
@proj_tel2,
@proj_tel3,
@proj_owner,
@proj_money,
@proj_cont)
IF @@ERROR <> 0
/* 成功返回0 */
BEGIN
SELECT @backErr=0
End
ELSE
BEGIN
/*失败返回1 */
SELECT @backErr=1
END
End
GO
-----------------------------------
其中 @backErr integer output 为我自己定义的返回值
现在我在aspx页面中定义了使用存储过程向数据库中插入数据,页面已经做好,文本框什么的。
我定义使用存储过程的代码是:
--------------------------------------
Dim strInsertCmd As String="AddNewProj" '定义命令字符串,实际上是存储过程的名字
objCommand= New SQLCommand(strInsertCmd,objConn) '定义命令对象
objCommand.CommandType=CommandType.StoredProcedure '声明命令类型为存储过程
--------------------------------------
然后向存储过程传输数据:
--------------------------------------
objCommand.Parameters.Add(New SqlParamete("@proj_ID",SqlDbType.VarChar,50)) '定义新的参数,存储过程用的变量名,类型是Char,长度为50
objCommand.Parameters("@proj_ID").Value=txtID.Text '这个参数的内容为文本框txtID的内容
--------------------------------------
以上代码全部通过
现在要获得存储过程运行后的返回值
--------------------------------------
'定义新的对象,设定存储过程变量为@backErr,类型是Integer
objCommand.Parameters.Add(New SqlParameter("@backErr",SqlDbType.Integer))
'把这个存储过程的内容设定为存储过程的返回值
objCommand.Parameters("@backErr").Value=ParameterDirection.Output
--------------------------------------
问题出来了:
.net FrameWork提示:
“Integer”不是“System.Data.SqlDbType”的成员。
而对应我在存储过程中定义的
@backErr integer output
就是设定存储过程的返回值,并且设定为Integer整型
现在我的问题是:
1. 请给出获得名叫@backErr的返回值的代码,如果我的存储过程编写有错误,请指出。
2. 编译器说我定义的Integer类型SqlDbType不支持,那么我该怎样设定?
3. 假设objCommand.Parameters("@backErr").Value=ParameterDirection.Output 已经成功,objCommand.Parameters("@backErr")成功的存放了返回值,那么假设我定义了一个Integer变量intBack,那么我这句代码:
intBack=objCommand.Parameters("@backErr").Value
是否正确?
4. 假设上面的问题全部通过,我运行存储过程的代码很简单:
objConn.Open()
objCommand.ExecuteNonQuery()
objConn.Close()
是否正确??
好了,就这么多问题,如果您学的是C#,也请给出代码,我看得懂,我学的是VB.net
谢谢大家!!