自定义函数:
create function cgNum()
returns varchar(20)
as
begin
declare @orderNum varchar(20)
exec addXsOrder @orderNum
return @orderNum
end
go我用过的两种调用:1.
SELECT dbo.cgNum()
错误提示:
服务器: 消息 557,级别 16,状态 2,过程 cgNum,行 6
只有函数和扩展存储过程才能从函数内部执行。
2.
select * from dbo.cgNum()
错误提示:
服务器: 消息 208,级别 16,状态 3,行 1
对象名 'dbo.cgNum' 无效。
问题:
1。我怎么才能调用我自己写的函数呀
2。我想让我的自定义函数作为某一列的默认值怎么实现呀?

解决方案 »

  1.   


    此函数为标量函数,即标量函数返回在 RETURNS 子句中定义的类型的单个数据值。调用方法:
    SELECT dbo.cgNum()
    函数中的有效语句类型包括: 1、DECLARE 语句,该语句可用于定义函数局部的数据变量和游标。
    2、为函数局部对象赋值,如使用 SET 给标量和表局部变量赋值。
    3、游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。不允许使用 FETCH 语句将数据返回到客户端。仅允许使用 FETCH 语句通过 INTO 子句给局部变量赋值。
    4、控制流语句。
    5、SELECT 语句,该语句包含带有表达式的选择列表,其中的表达式将值赋予函数的局部变量。
    6、INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部 table 变量。
    7、EXECUTE 语句,该语句调用扩展存储过程。
    即:函数中不能调用自定义的存储过程,只能用exec调用扩展存储过程。
      

  2.   

    说明:
    exec addXsOrder @orderNum
    执行的是一个储存过程,里面涉及到表数据的更新
    我想可能是这个的原因!
    如果是我该怎么解决呀