create proc dbo.del_res_imgpid nvarchar(500)asSelect * from test_reader.f_split(pid,',')go
简单存储过程调用的函数但是报错如下:服务器: 消息 170,级别 15,状态 1,过程 del_res_img,行 3
第 3 行: 'pid' 附近有语法错误。
服务器: 消息 155,级别 15,状态 1,过程 del_res_img,行 7
'pid' 不是可以识别的 OPTIMIZER LOCK HINTS 选项。
Select * from test_reader.f_split('1,2,3,4',',')这样的情况就能查出数据,但是写进存储过程就报错
f_split函数如下:
CREATE function test_reader.f_split(@SourceSql nvarchar(4000),@StrSeprate  nvarchar(10))
returns @temp table(a_id int identity(1,1),a varchar(100))
--实现split功能 的函数
--date    :2003-10-14
as 
begin
    declare @i int
    set @SourceSql=rtrim(ltrim(@SourceSql))
    set @i=charindex(@StrSeprate,@SourceSql)
    while @i>=1
    begin
        insert @temp values(left(@SourceSql,@i-1))
        set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
        set @i=charindex(@StrSeprate,@SourceSql)
    end
    if @SourceSql<>'' 
       insert @temp values(@SourceSql)
    return 
end

解决方案 »

  1.   

    create proc dbo.del_res_img@pid nvarchar(500)asSelect * from test_reader.f_split(@pid,',')go
      

  2.   

    create proc dbo.del_res_img@pid nvarchar(500)asSelect * from test_reader.f_split(@pid,',')go
      

  3.   

    create proc dbo.del_res_img@pid nvarchar(500)asSelect * from test_reader.f_split(@pid,',') as Ago
      

  4.   


    declare @id_count intset @id_count =Select count(*) from test_reader.f_split('s,ad,f',',')这样赋值不可以吗
      

  5.   

    declare @id_count intset @id_count =(Select count(*) from test_reader.f_split('s,ad,f',','))