我要写一个函数,他的值是返回表 , 如下create function result( @sql_where   varchar(1000) )
returns tablereturn(SELECT from sent ...........
)
我想现实传入一段where 的语句,然后接下函数语句中的select 语句组成一句完整的查询语句,最后才返回表的值,试了很久都没搞定,请朋友帮帮忙啊

解决方案 »

  1.   

    函数不能返回数据集,但你可以返回一个SQL语句字符串!
    create function result( @sql_where   varchar(1000) )
    returns varchar(8000) 
    as
    begin
    declare @SQLStr varchar(8000)
    set @SQLStr  = 'select * from sent where' + @sql_where  
    return @SQLStr
    end
      

  2.   

    在过程中调用:
    declare @sqlstr
    set @sqlstr = dbo.result('id=3')
    exec @sqlstr --执行SQL,得到数据集
      

  3.   

    楼上的朋友,我按你说的执行后有如下错误未能找到存储过程 'select * from sent where state = 1'。你试过行吗?
      

  4.   

    这里应该改为:
    declare @sqlstr
    set @sqlstr = dbo.result('id=3')
    exec( @sqlstr) --这里加括号,表示执行动态语句,而不加括号,表示执行存储过程
      

  5.   

    函数是可以返回表值的:USE pubs
    GO
    CREATE FUNCTION SalesByStore (@storeid varchar(30))
    RETURNS TABLE
    AS
    RETURN (SELECT title, qty
          FROM sales s, titles t
          WHERE s.stor_id = @storeid and
          t.title_id = s.title_id)调用是用:
    select * from SalesByStore('6380')
      

  6.   

    楼上大瞎说的好
    其实去看看sql server的帮助文件,都有的
      

  7.   

    函數是可以返回表的,但是有沒有誰知道返回不确定結構表.在ADO中,可以很容易的得到一個集合,在這之前,根本不需要知道集合的結構.然而,在T-Sql語句中,如果預先不知道表的結構,很難得到表結果.比如,我要寫一個函數,可以返回某個表的前十條記錄,而事先我不知道表名.也就是說,這個函數有兩個參數,一是表名,一是記錄數.有哪位大蝦知道的說一下?
      

  8.   

    函数可以返回表变量,是return返回值不能返回表
      

  9.   

    请问楼主这个问题当时是怎么解决的呢?我现在也遇到跟您同样的问题哦,好像表值函数只能代入字段,不能代入where条件参数是吧?如果您看到了请给我回复好吗?感激不尽!!