小弟新手把SQLSERVER的过程改成了ORACLE的老是报错,求高手解决,谢谢
这是个存储过程,但是运行后就提示“select SQL1||( ' , (case fieldcode when ''' + fieldcode + ''' then content else '''' end) ' + fieldcode + '') into SQL1 from (select distinct fieldcode from nbmm_marc_idx);
”这一行无效数字实在是不懂啊,小弟只懂点SQLSERVER的存储
下面是SQLERVER的过程set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER PROCEDURE [dbo].[SP_MARC_IDX]
-- Add the parameters for the stored procedure here
@SQL varchar(8000) OUTPUT
AS
BEGIN
set @SQL = 'select marcidentity '
select @SQL = @SQL + ' , (case fieldcode when ''' + fieldcode + ''' then [content] else '''' end) [' + fieldcode + ']'
from (select distinct fieldcode from nbmm_marc_idx) as a
set @SQL = @SQL + ' from nbmm_marc_idx '
END
下面是改成ORACLE后的过程create or replace procedure SP_MARC_IDX
(
  SQL1 out VARCHAR2
)
as
begin
SQL1:= 'select marcidentity ';
select SQL1||( ' , (case fieldcode when ''' + fieldcode + ''' then content else '''' end) ' + fieldcode + '') into SQL1 from (select distinct fieldcode from nbmm_marc_idx);SQL1 := SQL1|| ' from nbmm_marc_idx ';
end SP_MARC_IDX;
下面是我的运行代码
declare SQL1 VARCHAR(3000);
BEGIN
SP_MARC_IDX(SQL1);
END;

解决方案 »

  1.   

    select SQL1|| ' , (case fieldcode when ''' || fieldcode ||''' then content else '''' end) ' 
    || fieldcode into SQL1 from (select distinct fieldcode from nbmm_marc_idx);拼接字符串是||
      

  2.   


    谢谢,这个问题解决了,但是在nbmm_marc_idx里有多条记录,怎么把这多条记录赋予SQL1?,在SQLSERVER中可以,但是在这ORACLE中会报错,nbmm_marc_idx里的记录多条
      

  3.   

    1)定义cursor
    2)采用RECORD类型