日期:2014-05-17  浏览次数:20376 次

关于数据库存储过程的菜鸟问题.
创建存储过程

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
------解决方案--------------------
可以,没有问题