1.基本语法
利用SQL的语言可以编写对于数据库访问的存储过程,其语法如下:
CREATE PROC[EDURE]procedure_name[;number]
[
{@parameter data_type}][VARYING][=default][OUTPUT]
]
[,...n]
[WITH
{
RECOMPILE
|ENCRYPTION
|RECOMPILE,ENCRYPTION
}
]
[FOR REPLICATION]
AS
sql_statement[...n]
[]内的内容是可选项,而()内的内容是必选项,
例1:若用户想建立一个删除表tmp中的记录的存储过程Select_delete可写为:
Create Proc select_del As
Delete tmp
例2:用户想查询tmp表中某年的数据的存储过程
create proc select_query@year int as
select*from tmp where year=@year
在这里@year是存储过程的参数
2.存储过程实例
例1:
CREATE proc search_dwmc
@dwidoldint,
@dwmcresult varchar(100)output
as
declare@stopint
declare@result varchar(80)
declare@dwmc varchar(80)
declare@dwidint
set nocounton
set@stop=1(www.xing528.com)
set@dwmc=""
select@dwmc=dwmc,@dwid=convert(int,fjdid)from jtdw where id=@dwidold
set@result=rtrim(@dwmc)
if@dwid=0
set@stop=0
while(@stop=1)and(@dwid<>0)
begin
set@dwidold=@dwid
select@dwmc=dwmc,@dwid=convert(int,fjdid)from jtdw where id=@dwidold
if@@rowcount=0
set@dwmc=""
else
set@result=@dwmc+@result
if(@dwid=0)or(@@rowcount=0)
set@stop=0
else
continue
end
set@dwmcresult=rtrim(@result)
该存储过程是从某结点n开始找到最上层的父亲结点,这种经常用到的过程可以由存储过程来担当,在网页中重复使用达到共享。
空:表示该结点为顶层结点
fjdid(父结点编号)
结点n非空:表示该结点的父亲结点号
dwmc(单位名称)
例2:下面给出的是一个实现动态查询订单数据的存储过程实例
USE NORTHWIND
GO
CREATE PROCEDURE myProc@MORDERID CHAR(5)
AS
SELECT ORDERS. ORDERID,ORDERDATE,PRODUCTID,QUANTITY,UNITPRICE
FROM ORDERS
INNER JOINS ORDER DETAILS
ON ORDERS.ORDERID=[ORDER DETAILS].ORDERTD
WHERE ORDERS.ORDERID=@MORDERID
GO
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。