一:创建没有参数的存储过程:
CREATE PROCEDURE select_all
AS
BEGIN
SELECT * from T_login1
END
GO
二:创建带参数的存储过程:
CREATE PROCEDURE select_name
@id uniqueidentifier
AS
BEGIN
SELECT * from T_login1 where PSN0001A=@id
END
GO
扩展资料:
创建存储过程的注意事项:
1、保持事务简短,事务越短,越不可能造成阻塞。
2、在事务中尽量避免使用循环while和游标,以及避免采用访问大量行的语句。
3、在启动事务前完成所有的计算和查询等 *** 作,避免同一事务中交错读取和更新。可以使用表变量预先存储数据。即存储过程中查询与更新使用两个事务实现。
4、超时会让事务不执行回滚,超时后如果客户端关闭连接sqlserver自动回滚事务。如果不关闭,将造成数据丢失,而其他事务将在这个未关闭的连接上执行,造成资源锁定,甚至服务器停止响应。
SQL Server的语法:
create procedure proc_name
(@para1 int)
as
sql-statement
Mysql的语法:
create procedure proc_name
(para1 int)
sql-statement
上面的para1是参数,如果不需要可以省略括号里的内容
sql-statement是你存储过程要执行的语句,
如果还有什么疑问可以说出来
--[p2]create proc p2 @blh char(6),@odate datetime
as
select 病历号,入院时间 from 诊疗情况
where 病历号=@blh and 入院时间=@odate
go
--2.
create proc 存储过程名1 @blh char(6),@outdate datetime
as
update 诊疗情况 set 出院时间=getdate() where 病历号=@blh
exec p2 @blh,@outdate
commit
go
--修改病历号为A01101 ,入院时间为‘2012-5-1’的病人出院时间
exec 存储过程名1 'A01101','2012-5-1'
go
--[p3]:
create proc p3 @dname varchar(10),@avg_age int output
as
select @avg_age=avg(病人.年龄)
from 病人,诊疗情况,医生
where 医生.医生号=诊疗情况.医生号
and 诊疗情况.病历号=病人.病历号
and 医生.医生姓名=@dname
go
--3.
create proc 存储过程名2 @dname varchar(10)
as
declare @avgage int
exec p3 @dname,@avg_age=@avgage output
select 病人.病人姓名,病人.病人年龄
from 病人,诊疗情况,医生
where 医生.医生号=诊疗情况.医生号
and 诊疗情况.病历号=病人.病历号
and 医生.医生姓名=@dname
and 病人.病人年龄>@avgage
go
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)