在存储过程中如何拼接字符串参数
2010-01-18 15:14
344 查看
示例一、
declare @strWhere varchar(1000)
set @strWhere = 'cat2.CategoryName = '''+'手机'+''' and Quantity > 10' --cat2为表名
--exec dbo.UP_GetInventoryByPage 2,3, @strWhere
print(@strWhere)
示例二、
declare @Sql varchar(2000)
set @Sql = 'select * from dbo.Category'
declare @wh varchar(1000)
set @wh = '1'
if @wh = '1'
--当@wh变量值为字条串时用引号''将其括起来。
set @Sql = @Sql + ' where CategoryId =''' + @wh + '''' --结尾是四个引号
print(@Sql)
exec(@sql)
--other:
declare @Sql varchar(2000)
set @Sql = 'select * from dbo.Category'
declare @wh varchar(1000)
set @wh = '1'
当--@wh 变量值为 数字时,直接用
set @Sql = @Sql + ' where CategoryId =' + @wh
print (@Sql)
示例三:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROC [dbo].[UP_GetInventoryByPage]
@pageSize int,
@pageNumber int,
@strWhere varchar(1000) = '' --varchar(1000)= ''
AS
Declare @rowStart int
Declare @rowEnd int
Declare @strSql varchar(1000)
set @strSql =
'With Temp AS --用with申明一张Temp表
( SELECT InventoryID,inv.ProductID,inv.Quantity,pro.ProductName,pro.Price,cat.CategoryName,cat2.categoryName as ProductType,
ROW_NUMBER() OVER (order by InventoryID) as rowNumber
From Inventory inv inner join Product pro
on inv.productid = pro.productid
inner join category cat
on pro.categoryid = cat.categoryid
inner join category cat2
on cat.parentid = cat2.categoryid'
if @pageNumber > 0
Begin
if @strWhere <>''
begin
SET @pageNumber = @pageNumber -1
SET @rowStart = @pageSize * @pageNumber + 1;
SET @rowEnd = @rowStart + @pageSize - 1 ;
SET @strSql = @strSql +' Where '+ @strWhere + ')'+
' select *
from Temp
Where rowNumber >='+ str(@rowStart) +' and rowNumber <= '+ str(@rowEnd)
exec(@strSql)
end
else
Begin
SET @pageNumber = @pageNumber -1
SET @rowStart = @pageSize * @pageNumber + 1;
SET @rowEnd = @rowStart + @pageSize - 1 ;
Set @strSql = @strSql + ' ) '+
' select *
from Temp
Where rowNumber >= '+ str(@rowStart) +' and rowNumber <= '+str(@rowEnd) --整数的参数与字符串拼接时要转化为字符串
exec(@strSql)
END
end
declare @strWhere varchar(1000)
set @strWhere = 'cat2.CategoryName = '''+'手机'+''' and Quantity > 10' --cat2为表名
--exec dbo.UP_GetInventoryByPage 2,3, @strWhere
print(@strWhere)
示例二、
declare @Sql varchar(2000)
set @Sql = 'select * from dbo.Category'
declare @wh varchar(1000)
set @wh = '1'
if @wh = '1'
--当@wh变量值为字条串时用引号''将其括起来。
set @Sql = @Sql + ' where CategoryId =''' + @wh + '''' --结尾是四个引号
print(@Sql)
exec(@sql)
--other:
declare @Sql varchar(2000)
set @Sql = 'select * from dbo.Category'
declare @wh varchar(1000)
set @wh = '1'
当--@wh 变量值为 数字时,直接用
set @Sql = @Sql + ' where CategoryId =' + @wh
print (@Sql)
示例三:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROC [dbo].[UP_GetInventoryByPage]
@pageSize int,
@pageNumber int,
@strWhere varchar(1000) = '' --varchar(1000)= ''
AS
Declare @rowStart int
Declare @rowEnd int
Declare @strSql varchar(1000)
set @strSql =
'With Temp AS --用with申明一张Temp表
( SELECT InventoryID,inv.ProductID,inv.Quantity,pro.ProductName,pro.Price,cat.CategoryName,cat2.categoryName as ProductType,
ROW_NUMBER() OVER (order by InventoryID) as rowNumber
From Inventory inv inner join Product pro
on inv.productid = pro.productid
inner join category cat
on pro.categoryid = cat.categoryid
inner join category cat2
on cat.parentid = cat2.categoryid'
if @pageNumber > 0
Begin
if @strWhere <>''
begin
SET @pageNumber = @pageNumber -1
SET @rowStart = @pageSize * @pageNumber + 1;
SET @rowEnd = @rowStart + @pageSize - 1 ;
SET @strSql = @strSql +' Where '+ @strWhere + ')'+
' select *
from Temp
Where rowNumber >='+ str(@rowStart) +' and rowNumber <= '+ str(@rowEnd)
exec(@strSql)
end
else
Begin
SET @pageNumber = @pageNumber -1
SET @rowStart = @pageSize * @pageNumber + 1;
SET @rowEnd = @rowStart + @pageSize - 1 ;
Set @strSql = @strSql + ' ) '+
' select *
from Temp
Where rowNumber >= '+ str(@rowStart) +' and rowNumber <= '+str(@rowEnd) --整数的参数与字符串拼接时要转化为字符串
exec(@strSql)
END
end
相关文章推荐
- MySQL存储过程里字符串拼接返回参数的方法
- 写存储过程时如何对传进去的参数进行字符串的匹配
- postgresql 写存储过程传入的参数为字符串('4,5,6,8,9,10')个数不确定时,如何一次性删除
- 如何得到任意一个存储过程的参数列表的
- 在存储过程中如何实现将id列表字符串传入in()
- 如何向水晶报表数据源中的存储过程传参数
- SQLSERVER存储过程如何写带参数的游标
- PHP如何得到mssql的存储过程的输出参数?
- 存储过程————执行拼接的SQL语句的字符串
- 存储过程中动态条件的添加 where条件 in条件中字符串参数
- SQLServer-存储过程中使用字符串和分隔符实现传递数组参数
- 【机房收费系统】——存储过程之字符串拼接
- SQLServer-存储过程中使用字符串和分隔符实现传递数组参数(转)
- db2 - 如何在shell中获取存储过程OUT型参数的返回值(awk)
- sql 存储过程参数是表类型,数据库中如何调用
- 关于对MYSQL存储过程传递参数是纯数字还是字符串的判断
- 存储过程的输出参数为游标,PL/SQL中如何调用 Java代码如何调用
- mysq 存储过程判断为空null , mysql存储过程 字符串拼接
- javascript function传递 参数当参数是 字符串 如何拼接(有些参数是通过变量得到的) 如何拼接
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询