环境:sqlserver 20000
通常我们写的函数在使用时要加dbo.:
例如一个函数是myfunc ,则一般这样使用select dbo.myfunc...,不能做到像substring那样,select substring...;
请问如何做到?

解决方案 »

  1.   

    ....那个substrin是内置函数 
    ....myfunc是自定义的函数 
      

  2.   

    只要自己编写的, 前面都必须带dbo或者其他所有者。。不可能没有的
      

  3.   

    myfunc是自定义函数,需要加上dbo
      

  4.   

    函数调用
    在可使用标量表达式的位置可唤醒调用标量值函数,包括计算列和 CHECK 约束定义。当唤醒调用标量值函数时,至少应使用函数的两部分名称。[database_name.]owner_name.function_name ([argument_expr][,...])如果用户定义函数用于定义计算列,则该函数的确定性同样决定了是否可在该计算列上创建索引。只有当函数具有确定性时,才可以在使用该函数的计算列上创建索引。如果在输入相同的情况下函数始终返回相同的值,则该函数具有确定性。可以使用由一部分组成的名称唤醒调用表值函数。[database_name.][owner_name.]function_name ([argument_expr][,...])对于 Microsoft® SQL Server™ 2000 中包含的系统表函数,唤醒调用时需在函数名的前面加上前缀"::"。SELECT *
    FROM ::fn_helpcollations()对于导致语句停止执行然后从存储过程中的下一语句继续执行的 Transact-SQL 错误,在函数中的处理方式不同。在函数中,这类错误会导致函数停止执行。这反过来使唤醒调用该函数的语句停止执行。
      

  5.   

    。谁说的。create function ks()
    returns @s table (a int)
    as
    begin 
    insert @s values(1)
    return
    end
    select * from ks() 
    /*
    a
    -----------
    1*/
      

  6.   

    http://lidup.blog.51cto.com/426277/160904
      

  7.   

    关键字: sql server, 表值函数Sql server 的表值函数是返回一个Table类型,table类型相当与一张存储在内存中的一张虚拟表。
    实现表值函数很简单:
    下面是一个不带输入参数的表值函数create function tvpoints()
    returns table
    as 
    return
    (
    select * from tb_users
    );
    这个表值函数数查询所有用户表的数据对于多语句表值函数,在 BEGIN...END 语句块中定义的函数体包含一系列 Transact-SQL 语句,这些语句可生成行并将其插入将返回的表中。以下示例创建了一个表值函数.create function tvpoints()
    returns @points table (x float, y float)
    as begin
    insert @points values(1,2);
    insert @points values(3,4);
    return;
    end查询表值函数跟查询普通表一样
    select * from tvpoints()
    返回的是一张表带输入参数的表值函数create function tvpoints2(@x AS int,@y as int)
    returns @points table (x float, y float)
    as begin
    insert @points values(@x,@y);
    return;
    end本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fredrickhu/archive/2009/09/23/4583130.aspx