我想自定义一个函数,函数需要接受几个参数,其中有几个参数是表名和字段名,
函数的作用是根据传递进来的表和字段,计算一个个值,因为表名和字段是用参数的形式传递的,
所以我想只能用exec动态执行查询语句,
在查询分析器中检查语法没有问题,执行时就会报错说在函数中错误的使用了exec,但是把函数改成存储过程就没有问题。
我是不是只能改用能返回值得存储过程实现,
但是我将来希望能在查询语句中使用函数,存储过程可能没法实现。

解决方案 »

  1.   

    函数内不能调用 EXEC() SP_EXECUTESQL 等动态语句 ,还有用户自定义的储存过程 和临时表 只能调用扩展存储过程 
      

  2.   

    也不能使用insert , update , delete等命令.
      

  3.   

    函数中的有效语句的类型包括: DECLARE 语句,该语句可用于定义函数局部的数据变量和游标。
    为函数局部对象的赋值,如使用 SET 为标量和表局部变量赋值。
    游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。不允许使用 FETCH 语句将数据返回到客户端。仅允许使用 FETCH 语句通过 INTO 子句给局部变量赋值。
    除 TRY...CATCH 语句之外的控制流语句。
    SELECT 语句,该语句包含具有为函数的局部变量赋值的表达式的选择列表。
    INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部表变量。
    EXECUTE 语句,该语句调用扩展存储过程。