34,590
社区成员
发帖
与我相关
我的任务
分享
CREATE PROC procGetEntity(
@topicid NVARCHAR(100),
@filter NVARCHAR(400)
)
AS
DECLARE @ROWS INT
DECLARE @sqlGetRowNumber NVARCHAR(1000)
SET @sqlGetRowNumber=N' select @rows=rownumber from (select rownumber=row_number()over(order by createtime),* from topic) k where TopicID='''+@topicid+'''and' +@filter
SET @sqlGetRowNumber=N'DECLARE @ROWS INT select @rows=rownumb...
-- 建测试表
create table topic(id int)
-- 产生40条记录
insert into topic(id)
select number
from master.dbo.spt_values
where type='P' and number between 1 and 40
declare @ROWS int
declare @sqlGetRowNumber nvarchar(1000)
set @sqlGetRowNumber=N'select @ROWS=count(1) from topic'
exec sp_executesql @sqlGetRowNumber,N'@ROWS int output',@ROWS=@ROWS output
select @ROWS 'ROWS_Value'
/*
ROWS_Value
-----------
40
(1 row(s) affected)
*/
alter PROC procGetEntity(
@topicid NVARCHAR(100),
@filter NVARCHAR(400),
@ROWS int output
)
AS
--DECLARE @ROWS INT
DECLARE @sqlGetRowNumber NVARCHAR(1000)
SET @sqlGetRowNumber=N' select @rows=rownumber from (select rownumber=row_number()over(order by createtime),*
from topic) k where TopicID='''+@topicid+'''and ' +@filter
exec sp_executesql @sqlGetRowNumber,N'@rows int output',@rows output
go
declare @rows int
exec procGetEntity 5,' 1=1 ',@rows output
DECLARE @IntVariable int;
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @max_title varchar(30);
SET @IntVariable = 197;
SET @SQLString = N'SELECT @max_titleOUT = max(JobTitle)
FROM AdventureWorks2008R2.HumanResources.Employee
WHERE BusinessEntityID = @level';
SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @level = @IntVariable, @max_titleOUT=@max_title OUTPUT;
SELECT @max_title;