我在一个自定义函数中用到了动态语句,现在需要用到其结果集,要从其结果集里面再查询数据。
游标?临时表?还是其它?

解决方案 »

  1.   

    我在一个自定义函数中用到了动态语句函数中无法使用exec的。
      

  2.   

    SELECT * FROM DBO.函數() WHEER 條件
      

  3.   

    可以用表值函数啊。SELECT * FROM DBO.函數() 
      

  4.   

    --不在函数中该如何写啊?
    --假如:
    DECLARE @SQL NVARCHAR(4000)
    DECLARE @COL NVARCHAR(50)
    SET @COL='XXX'
    SET @SQL='SELECT * FROM TB WHERE COL1=' + @COL
    EXEC(@SQL)
    --我要从上面的EXEC(@SQL)结果集里面查询第一条数据,该怎么写?
      

  5.   


    SET @SQL='SELECT * FROM TB WHERE COL1=' + @COL
    --改为:
    SET @SQL='SELECT top 1 * FROM TB WHERE COL1=' + @COL
      

  6.   

    SELECT TOP 1 * FROM TB WHERE COL1= @COL
      

  7.   

    怪我前面没有问清楚问题。重新问:
    DECLARE @SQL NVARCHAR(4000)
    DECLARE @TBName NVARCHAR(50)
    DECLARE @COL1Name NVARCHAR(50)
    DECLARE @COL2Name NVARCHAR(50)
    DECLARE @COL2Value NVARCHAR(50)
    SET @TBName='OrgCompany'
    SET @COL1Name='OrgID'
    SET @COL2Name='CompanyNo'
    SET @COL2Value='1'
    SET @SQL='SELECT TOP 1 ' + @COL1Name + ' FROM ' + @TBName + ' WHERE ' + @COL2Name +' = ' + @COL2Value
    EXEC(@SQL)
    --OrgID
    ----------------------------------------------------
    --1
    --
    --(1 個資料列受到影響)
    我要把上面的这个结果(即:1)赋给一个变量@T,该如何操作?
      

  8.   

    使用SP_EXECUTESQL 的参数输出方法获取.
      

  9.   


    declare @s nvarchar(1000)
    declare @name nvarchar(40)
    set @s = N'select top 1 @name = name from sysobjects'exec sp_executesql @s,N'@name nvarchar(40) output',@name outputselect @name举个例子如上
      

  10.   

    declare @s varchar(1000)
    declare @i intset @s = N'select @i = count(1) from ta'sp_executesql @s,'@i int out',@i outselect @i