set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER PROCEDURE [dbo].[P_E_Brand] @Link VARCHAR(100),@ReturnValue INT OUTPUT
AS
SET NOCOUNT ON
SET @ReturnValue= (SELECT ISNULL((SELECT PKID FROM Brand WHERE Link =''+@Link+''),0))
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--这样有数据

解决方案 »

  1.   

    本帖最后由 libin_ftsafe 于 2008-05-06 11:35:30 编辑
      

  2.   


    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--什么都没有什么都没有。如果正常的来说应该是输出1怎么解决。。
      

  3.   

    EXECUTE P_E_Rows @TabName='Task' @Condition=‘PKID=1’,@ReturnValue =@SQL
    这样执行有结果没啊?
      

  4.   

    错误语句查询结果为多行,但是@SQL是个字符串
    SET @SQL='SET @ReturnValue=(SELECT 1 FROM '+@TabName+' WHERE '+@Condition+')'
    改为
    SET @SQL='SET @ReturnValue=(SELECT count(1) FROM '+@TabName+' WHERE '+@Condition+')'
    or
    SET @SQL='set @ReturnValue =0 SELECT @ReturnValue=@ReturnValue+1 FROM '+@TabName+' WHERE '+@Condition+''
      

  5.   

    解决了
    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 OUTPUT--这里忘记写output了
    SET @ReturnValue=ISNULL(@ReturnValue,0)DECLARE @SQL INT
    EXECUTE P_E_Rows Task,[PKID=2],@SQL output
    print @SQL--OK--http://topic.csdn.net/u/20080505/18/db241695-5489-42ae-91be-4fd4fc3a85f7.html
    --一楼的热心人士忘记写Output了...所以我也................