该自定义函数功能主要是实现数据的转换。通过传递参数值1与转换sql参数2,得到转换后的值。同时参数值2中需要参数值1来实现查询。
例如:
select Deptname from Dept where DeptNo=@DeptNoCREATE FUNCTION dbo.Dep(@DeptNo,@SQL)
as......return @deptname???@deptNo='12345';
@SQL='select Deptname from Dept where DeptNo=@DeptNo'
select dbo.dep('12345',@SQL).
请问如何写该自定义函数数返回'select Deptname from Dept where DeptNo=‘12345’的值。(因为我传递的@SQL是字符串形式,不能在自定义函数中执行,请高手指点,谢谢)

解决方案 »

  1.   

    create function dbo.f_getsql(@i int,@sql varchar(100))
    returns varchar(100)
    as 
    begin 
    declare @var varchar(100)
    set @var='select Deptname from Dept where DeptNo='''+cast(@i as varchar)+''''
    return (@var)
    end
    select dbo.f_getsql('123','1')
    ------------------------------------------
    select Deptname from Dept where DeptNo='123'
      

  2.   

    sql 2005的话, 写CLR函数2000应该是没法整了
      

  3.   

    沒看懂你的目的    你SQL查詢語句是動態的.也就是查詢的資料表是動態的?
      

  4.   

    給你一個參照:
        CREATE   PROC  proc1
          @p1   VARCHAR(20), --查詢時條件的值
          @p2   varchar(100)  
         as
         BEGIN
           DECLARE   @SQL_C  VARCHAR(120)
           SET  @SQL_C =@p2 +'CONVERT(VARCHAR(20),'''+@p1+''')'
           EXEC (@SQL_C)
         END  
    執行    EXEC proc1  '5U641E7YV8W','SELECT WO_NO FROM dbo.OPAS_SFC   where  NO='
     可得到結果
    若要更好一點就要傳形態等參數進去了