下面是
http://community.csdn.net/Expert/topic/5552/5552690.xml?temp=.154339
高歌写的存储过程:未测试过
-------------------------------------------------------------
create procedure test(@name varchar,@TypeId int)
as
declare @sql varchar(512)
declare @iWhere varchar(32)
set @sql="select * from tab"
set @iWhere=" where 1=1"
if(name <> "")
begin
set @iWhere =@iWhere + " And Name like '%" + Name + "%'";
end
if(TypeID <> -1)
begin
set @iWhere =@iWhere + "And TypeID =" + TypeID;
end
EXECUTE sp_executesql @sql
---------------------------------------
理解:
create procedure test(@name varchar,@TypeId int)
创建一个test存储过程 传两个参数 name typeid
declare @sql varchar(512)
declare @iWhere varchar(32)
声明两个变量
set @sql="select * from tab"
set @iWhere=" where 1=1"
设置变量sql的值
if(name <> "")
begin
set @iWhere =@iWhere + " And Name like '%" + Name + "%'";
end
if(TypeID <> -1)
begin
set @iWhere =@iWhere + "And TypeID =" + TypeID;
end
根据条件给 iWhere赋值
EXECUTE sp_executesql @sql
执行sql语句
------------------------------------
以下是我不理解的
1:这里的declare是不是相当于VB的dim
2:set @sql="select * from tab" 在sql中赋值是不是前面要加多一个set 还是有别的用意
3:begin end 是不是相当于C#的{ }
4:这里是不是少了一句set @sql=@sql + @iWhere;谢谢
http://community.csdn.net/Expert/topic/5552/5552690.xml?temp=.154339
高歌写的存储过程:未测试过
-------------------------------------------------------------
create procedure test(@name varchar,@TypeId int)
as
declare @sql varchar(512)
declare @iWhere varchar(32)
set @sql="select * from tab"
set @iWhere=" where 1=1"
if(name <> "")
begin
set @iWhere =@iWhere + " And Name like '%" + Name + "%'";
end
if(TypeID <> -1)
begin
set @iWhere =@iWhere + "And TypeID =" + TypeID;
end
EXECUTE sp_executesql @sql
---------------------------------------
理解:
create procedure test(@name varchar,@TypeId int)
创建一个test存储过程 传两个参数 name typeid
declare @sql varchar(512)
declare @iWhere varchar(32)
声明两个变量
set @sql="select * from tab"
set @iWhere=" where 1=1"
设置变量sql的值
if(name <> "")
begin
set @iWhere =@iWhere + " And Name like '%" + Name + "%'";
end
if(TypeID <> -1)
begin
set @iWhere =@iWhere + "And TypeID =" + TypeID;
end
根据条件给 iWhere赋值
EXECUTE sp_executesql @sql
执行sql语句
------------------------------------
以下是我不理解的
1:这里的declare是不是相当于VB的dim
2:set @sql="select * from tab" 在sql中赋值是不是前面要加多一个set 还是有别的用意
3:begin end 是不是相当于C#的{ }
4:这里是不是少了一句set @sql=@sql + @iWhere;谢谢
赋值的方式有两种,一种是set 另一种是select
不能用像程序中 变量 = 值这种方法
3:begin end 是不是相当于C#的{ }差不多. 应该是 if后面的{}4.对
2:set @sql="select * from tab" 在sql中赋值是不是前面要加多一个set 还是有别的用意
3:begin end 是不是相当于C#的{ }
4:这里是不是少了一句set @sql=@sql + @iWhere;以上你的理解都正确。set 就是给变量重新赋值