http://topic.csdn.net/u/20081025/09/1eaff677-7cb2-4a26-9c6d-cd9202932f06.html
1.写第一个存储过程
create proc query_table
as
select * from mytable
GO
2.在查询分析器里执行存储过程
exec query_book
3.写个带参数的存储过程
CREATE PROCEDURE [dbo].[query_param]
(
@ID int
)
AS
select * from a
GO
执行方法exec query_param @ID=1
4.带多个参数的执行
exec query_param @ID=1,@name=2
5.存储过程中begin/end的用法
CREATE proc query_table
as
begin
select * from a --存储过程中begin/end的用法
select * from b --返回不至一个表。
end
GO
6output/input
CREATE proc query_table
@dd int output
as
begin
select @dd=count(*) from a
end
GO
存储过程除了返回查询结果以外可以返回一些值,这些值就是由这些标示为output的参数传递出去的。
默认的都是input类型,output型可以通过C#代码语句取得。
7.在查询分析器里得到输出参数。
declare @a int
exec query_table @a out --在这里把输出参数赋给a,然后查询出来。
select @a
3.常用语法
rtrim(@ygdm)--去除空格
if(rtrim(@bmdm)='')
begin
set @bmdm=(select min(bmdm) from p_bmdm)
end
else
begin
end4.参数赋值的方法是set
CREATE proc query_table
@dd int output,
@aa int output
as
begin
set @aa=27
select @dd=count(*) from a
end
GO
执行
declare @a int,@b int
exec query_table @a out,@b out
select @a,@b3.常用语法
rtrim(@ygdm)--去除空格
@num=len(1111)--返回值为4
set @aa=left('27222222',3)--从左取前三个字符
space(10)空格
case v when 0 then aa=0 else aa=1
convert(decimal(5,2),0.00)4.常用方式
CREATE proc insert_table
as
begin
insert into a (s1) (select s2 from b)
end
GOinsert into ls_bmcx (bmdm,zs,rybz,bmmc,ygdm)(select a.*,b.bmmc,@ygdm as ygdm from #lsb01 a inner join p_bmdm b on a.bmdm=b.bmdm)
5.连接查询用法
inner join
left join
6.#临时表