从 .net 发出 运行 存储过程
Issue running stored procedure from .net
我有这个 stored procedure
:
CREATE PROCEDURE [dbo].[GetTransactionFeeType_Pager]
@PageIndex INT = 1
,@PageSize INT = 10
,@ProgramName VARCHAR = ''
,@RecordCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY ID ASC
)AS RowNumber
,FeeType,TransactionNumber,Amount,TransactionDate,ResponseDescription,PaidUsing
INTO #Results
FROM TransactionLog where FeeType=@ProgramName
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
END
基本上就是return分页……
现在,当来自 sql 服务器的 运行 并将参数传递为;
时,以上运行正常
1 , 10 , Deposit
但是使用下面的代码:
string query = "[GetTransactionFeeType_Pager]";
SqlCommand cmd = new SqlCommand(query);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@PageIndex", pageIndex);
cmd.Parameters.AddWithValue("@PageSize", PageSize);
cmd.Parameters.AddWithValue("@ProgramName", programID.ToString());
cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction =
ParameterDirection.Output;
与 SQL SERVER 相同; 1 , 10 , 存款
但它 return 没有结果/空结果。奇怪的是我相信它昨天工作正常所以不知道发生了什么......
有什么建议吗?
VARCHAR()
没有指定长度通常默认长度为 1 - 然后您传递的值将被静默截断。
所以
CREATE PROCEDURE [dbo].[GetTransactionFeeType_Pager]
@PageIndex INT = 1
,@PageSize INT = 10
,@ProgramName VARCHAR(99) = ''
,@RecordCount INT OUTPUT
AS
...
通过定义@ProgramName
的长度来达到目的
我有这个 stored procedure
:
CREATE PROCEDURE [dbo].[GetTransactionFeeType_Pager]
@PageIndex INT = 1
,@PageSize INT = 10
,@ProgramName VARCHAR = ''
,@RecordCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY ID ASC
)AS RowNumber
,FeeType,TransactionNumber,Amount,TransactionDate,ResponseDescription,PaidUsing
INTO #Results
FROM TransactionLog where FeeType=@ProgramName
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
END
基本上就是return分页……
现在,当来自 sql 服务器的 运行 并将参数传递为;
时,以上运行正常1 , 10 , Deposit
但是使用下面的代码:
string query = "[GetTransactionFeeType_Pager]";
SqlCommand cmd = new SqlCommand(query);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@PageIndex", pageIndex);
cmd.Parameters.AddWithValue("@PageSize", PageSize);
cmd.Parameters.AddWithValue("@ProgramName", programID.ToString());
cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction =
ParameterDirection.Output;
与 SQL SERVER 相同; 1 , 10 , 存款 但它 return 没有结果/空结果。奇怪的是我相信它昨天工作正常所以不知道发生了什么......
有什么建议吗?
VARCHAR()
没有指定长度通常默认长度为 1 - 然后您传递的值将被静默截断。
所以
CREATE PROCEDURE [dbo].[GetTransactionFeeType_Pager]
@PageIndex INT = 1
,@PageSize INT = 10
,@ProgramName VARCHAR(99) = ''
,@RecordCount INT OUTPUT
AS
...
通过定义@ProgramName
的长度来达到目的