如題:
    我寫了個自定義函數,裡面有一個遊標,遊標部門單獨運行沒有問題,但是將遊標放在自定義函數中就有如下提示:
    Msg 170, Level 15, State 1, Procedure queryInfo, Line 6
    行 6: '72-B11IE01015BRI001' 附近的語法不正確。
    Msg 178, Level 15, State 1, Line 14
    此處不得使用會有傳回值的 RETURN 陳述式。    自定義函數如果沒有將遊標部分放進去也可以執行,現將函數貼出如下:
     create function  queryInfo(@pId nvarchar(100))
      RETURNS nvarchar(50) AS  
      begin
declare bomPn cursor
for select parent,pn  from sz6_bom..bom 
 where parent='72-B11IE01015BRI001' 
go
declare @parentId nvarchar(100)
declare @pnId nvarchar(100) 
open bomPn
   fetch next from bomPn into @parentId,@pnId
while @@fetch_status=0
begin
  print @parentId
  print @pnId
  fetch next from  bomPn into @parentId,@pnId
end
close bomPn
deallocate bomPn
return 'asdff'
    end
go
       執行以下函數可以正確運行:
          create function  queryInfo(@pId nvarchar(100))
      RETURNS nvarchar(50) AS  
      begin
       return 'asdff'
     end
     go
     執行遊標也正常:
      declare bomPn cursor
for select parent,pn  from sz6_bom..bom 
 where parent='72-B11IE01015BRI001' 
go
declare @parentId nvarchar(100)
declare @pnId nvarchar(100) 
open bomPn
   fetch next from bomPn into @parentId,@pnId
while @@fetch_status=0
begin
  print @parentId
  print @pnId
  fetch next from  bomPn into @parentId,@pnId
end
close bomPn
deallocate bomPn
     查了半天沒有發現哪裡出現問題,請各位幫忙檢查下!謝謝!!
           

解决方案 »

  1.   

    函数中的语句只能为一个批处理,即不能包含 gocreate function queryInfo(@pId nvarchar(100))
    RETURNS nvarchar(50) AS  
    begin
    declare bomPn cursor local for 
     select parent,pn from sz6_bom..bom where parent='72-B11IE01015BRI001' ;
    declare @parentId nvarchar(100);
    declare @pnId nvarchar(100);open bomPn;
    fetch next from bomPn into @parentId,@pnId;
    while @@fetch_status=0
    begin
     print @parentId;
     print @pnId;
     fetch next from bomPn into @parentId,@pnId;
    end
    close bomPnl;
    deallocate bomPn;return 'asdff';
    end
      

  2.   

      Msg 170, Level 15, State 1, Procedure queryInfo, Line 6
      行 6: '72-B11IE01015BRI001' 附近的語法不正確。
      Msg 178, Level 15, State 1, Line 14
      此處不得使用會有傳回值的 RETURN 陳述式。=======================
    系统已经将错误告诉你了------  此處不得使用會有傳回值的 RETURN 陳述式