看到以前的人写的SQL,有个left()函数,好奇怪,具体如下:
SELECT left(dbo.get_package_unit(I_CUS_NUMBER,I_PDT_NUMBER),1)
where 以下省略...............若此时执行查询,可以出来结果
但是,在数据库里找不到left()里的那个dbo.get_package_unit
并且 select * from dbo.get_package_unit ,提示对象名 'dbo.get_package_unit' 无效。什么情况?

解决方案 »

  1.   

    dbo.get_package_unit
    这个应该是标量函数,而你select * from 就变成了表值函数,可以试试:
    sp_helptext 'get_package_unit'
      

  2.   

    dbo.get_package_unit这肯定是个自定义的标量函数,必须赋予值才有结果
    dbo.get_package_unit(I_CUS_NUMBER,I_PDT_NUMBER)查看函数sp_helptext get_package_unit
      

  3.   

    下面是一个标量函数的例子,请参考理解标量函数
    create function code(@scode varchar(10))returns varchar(10)as begindeclare @ccode varchar(10)set @scode = @scode + ‘%’select @ccode=ccode from cmessage   where ccode like @scodereturn @ccodeend
    select name from class where ccode = dbo.code(‘001’)
      

  4.   

    你要查看对象就
    SELECT * FROM sys.objects WHERE type='fn'