关于数据库存储过程的菜鸟问题.
创建存储过程
create Proc dbo.存储过程名
存储过程参数
as
执行语句
return
执行存储过程
GO
这是一般创建过程.
"执行语句
return
"
和
"执行存储过程
GO"
这两个位置互换没有问题吧...我建一个例子...但是感觉好别扭...
况且我见他是
"执行存储过程" -> "执行语句" -> begin -> end...
这两天刚碰 数据库存储过程....明天去看图书馆有木有数据库的书...
[解决办法]
--一个简单的存储过程
CREATE PROCEDURE order_tot_amt
@o_id int,
@p_tot int output
AS
SELECT @p_tot = sum(Unitprice*Quantity)
FROM orderdetails
WHERE orderid = @o_id
GO
如上所示 简单的存储过程不一定非得要return吧
如果需要事务处理的话 需要ROLLBACK 并且return 结束
例如:
CREATE PROC pr_auth_user
@au_id varchar(11),
@au_lname varchar(40),
@au_fname varchar(40),
@phone char(12),
@contract bit,
--一般将具有默认值的参数放在后边定义,便于调用时省略
@address varchar(50)=null,
@city varchar(20)=null,
@state char(2)=null,
@zip char(5)=null
AS
BEGIN TRAN
INSERT usermember1(username,pwd)
VALUES(@au_fname+' '+ @au_lname, @au_fname+' '+ @au_lname);
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN
END
INSERT usermember2(username,pwd)
VALUES(@au_fname+' '+ @au_lname, @au_fname+' '+ @au_lname);
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN
END
COMMIT TRAN
GO
[解决办法]
可以,没有问题