REATE OR REPLACE procedure "GetIdByName"(tablename in varchar2)
as  
begin
select count(1) into recordNum from tablename 
         where recordname=recordValue;
end;
编译时报错,改怎么办,

解决方案 »

  1.   

    REATE OR REPLACE procedure "GetIdByName"(tablename in varchar2)
    as 
    recordNum number;
    begin
        execute immediate 'select count(1) from '||tablename||
             ' where recordname=recordValue' into recordNum;
    end;
      

  2.   

    execute immediate  'select count(1) from '||tablename ||' where'|| recordname||'='||recordValue||'into recordNum ;
    select count(1) form talbe1 where id='www' into recordNum;单引号怎么加呢?
      

  3.   

    execute immediate 'select count(1) from '||tablename||'where '||recordname||'='||recordValue|| into recordNum;这一句哪有错啊,
    为什么编译时报错呢???
      

  4.   

    select count(1) form talbe1 where id='www';
    的动态字符串是:
    'select count(1) form talbe1 where id=''www''';
    在该有 引号的地方多加个引号。至于编译错误,那就看你的
    recordname和recordValue是什么了?是字段名还是变量什么的?
      

  5.   

    CREATE OR REPLACE procedure "GetIdByName"(tablename in varchar2,recordname in varchar2,recordValue in varchar2)
    recordname和recordValue 都是变量,最后那个双竖杠 到底要不要啊 ?
      

  6.   

    如果recordValue不需要引号的话就不要后面的||
    变量recordname应该是个列名吧???
    如果recordValue的值要用引号括起来的话,就要写成
    execute immediate 'select count(1) from '||tablename||'where '||recordname||'='''||recordValue||'''' into recordNum;
      

  7.   

    ||是用来连接字符串的,因为后面的into recordNum不包含在字符串里面,所以在into recordNum之前就不需要用||