sql怎样新建存储过程

sql怎样新建存储过程,第1张

一:创建没有参数的存储过程:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9966206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存