Procedure

来源:百度知道 编辑:UC知道 时间:2024/05/28 09:52:29
ALTER PROCEDURE P_E_Rows @TabName SYSNAME,@Condition VARCHAR(500),@ReturnValue INT OUTPUT
AS
SET NOCOUNT ON
DECLARE @SQL NVARCHAR(4000)
SET @SQL='SET '+CAST(@ReturnValue AS CHAR(10))+'=(SELECT 1 FROM '+@TabName+' WHERE '+@Condition+')'
EXECUTE SP_EXECUTESQL @SQL
PRINT @SQL--编译没有问题...............

DECLARE @SQL varchar(50)
EXECUTE P_E_Rows Task,[PKID=1],@SQL output
print @SQL--什么都没有。。。。。。。。。。。。。。。

SELECT 1 From Task WHERE PKID=1--这样有数据
ALTER PROCEDURE P_E_Rows @TabName SYSNAME,@Condition VARCHAR(500),@ReturnValue INT OUTPUT
AS
SET NOCOUNT ON
DECLARE @SQL NVARCHAR(4000)
SET @SQL='SET @ReturnValue=(SELECT 1 FROM '+@TabName+' WHERE '+@Condition+')'
EXECUTE SP_EXECUTESQL @SQL,N'@ReturnValue INT OUTPUT',@ReturnValue

编译成功

DECLARE @SQL INT
EXECUTE P_E_Rows Task,[PKID=1],@SQL output
print @SQL--什么都没有。。。。。。。。。。。。

调试过了....接分
--创建存储过程实现通过表名查行数
create Proc [dbo].[condition_Count]
@TabName SYSNAME,
@Condition varchar(500),
@ReturnValue INT OUTPUT
as
SET NOCOUNT ON
declare @sqls nvarchar(400)
set @sqls='select @a=count(*) from '+@TabName+' '+'where '+@Condition +' '
exec sp_executesql @sqls,N'@a int output',@ReturnValue output
--调用存储过程实现通过表名查行数
declare @ReturnValue INT
exec [dbo].[condition_Count] [message],'id=1',@ReturnValue output
select @ReturnValue

@ReturnValue INT OUTPUT
DECLARE @SQL varchar(50)
EXECUTE P_E_Rows Task,[PKID=1],@SQL output

你的数据类型根本写错了啊,怎么会有数据?

@ReturnValue INT OUTPUT
DECLARE @SQL varchar(50)
EXECUTE P_E_Rows Task,[PKID=1],@SQL output

--我猜您是要输出@RETURNvALUE,这样就可以了:
CREATE PROCEDURE P_E_Rows @TabName S