Sql server 带输出参数的存储过程
尝试创建一个存储过程,该过程将给出所需的记录数以及该表中的记录总数 “@Query”部分在我单独执行时给出结果。所以这没问题。 谁能检查一下语法是否正确,因为我没有得到任何结果Sql server 带输出参数的存储过程,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,尝试创建一个存储过程,该过程将给出所需的记录数以及该表中的记录总数 “@Query”部分在我单独执行时给出结果。所以这没问题。 谁能检查一下语法是否正确,因为我没有得到任何结果 ALTER PROCEDURE GetRecordsByPage ( @TableName nvarchar(50), @ColumnName nvarchar(50), @OrderByClause nvarchar(50), @StartIndex nvarch
ALTER PROCEDURE GetRecordsByPage
(
@TableName nvarchar(50),
@ColumnName nvarchar(50),
@OrderByClause nvarchar(50),
@StartIndex nvarchar(50),
@EndIndex nvarchar(50),
@TotalRows nvarchar(50) output
)
AS
BEGIN
DECLARE @Query nvarchar(max)
select @Query = 'select '+@TotalRows+' = count(*) from '+@TableName+'
where deleted=0
with temp as (select row_number() over (order by '+
@colname+' '+@OrderByClause+') as row, * from '+@tablename+')
select * from temp where row between '+@startIndex+' and '
+@EndIndex
execute sp_executesql @Query, @TotalRows output
END
--is this correct, to test this stored procedure
-- execute GetRecordsByPage 'tblBranch','BranchName', '2', '10'
否则,查询将是:
select count(*) from tblBranch;
With temp as
(select row_number over(order by name desc) as row, * from tblbranch)
select * from temp where row between 11 and 20;
您将int赋值给@TotalRows,该@TotalRows类型为nvarchari。如果赋值给
NVARCHAR
变量,则应使用N'.'
指示Unicode。下一步:您必须在带有关键字的前面加上分号(;
)。编写类似select@query='select count(*)的查询。那么我应该如何将它存储在变量中。@Ruby检查我的回答您已经在paramDefinition中将它声明为int。第一个声明是nvarchar。所以我也应该把它改为int。为什么在exec语句中@query后面有一个额外的逗号/param。我假设测试过程的最终execute语句是正确的…itexecute GetRecordsByPage'tblBranch','BranchName','2','10',/@TotalRows output-给出一个错误-必须声明标量变量/@TotalRows-但它不是已经声明了吗?您是否将/@TotalRows使用GetRecordsByPage'tblBranch','BranchName','2','10',@TotalRowsWhen仅使用“@”…它不允许提交。它认为这是一个用户名。这行代码和你写的一样,但是末尾有“output”你怎么称呼它是c#。。我只是问问
ALTER PROCEDURE GetRecordsByPage
(
@TableName nvarchar(50),
@ColumnName nvarchar(50),
@OrderByClause nvarchar(50),
@StartIndex nvarchar(50),
@EndIndex nvarchar(50),
@TotalRows nvarchar(50) output
)
AS
BEGIN
DECLARE @Query nvarchar(max)
select @Query = 'select @TotalRowsOut = count(*) from '+@TableName+'
where deleted=0
with temp as (select row_number() over (order by '+
@colname+' '+@OrderByClause+') as row, * from '+@tablename+')
select * from temp where row between '+@startIndex+' and '
+@EndIndex
DECLARE @ParmDefinition nvarchar(500);
SET @ParmDefinition = N'@TotalRowsOut int OUTPUT';
execute sp_executesql @Query, @ParmDefinition,@TotalRowsOut=@TotalRows output
select @TotalRows
END