过程创建没有问题,但是执行的时候总提示“无效列名”,主要是在dual中找不到gametime,我该怎么改create or replace procedure p_single_test(sid in char,gametime in char,gametype in char)  as
begin 
MERGE INTO single_test B
USING (select gametime from dual) E
ON (b.game_time=E.gametime)
WHEN MATCHED THEN
update set game_type=gametype
WHEN NOT MATCHED THEN
INSERT  (b.id,b.game_time)
 VALUES (sid,gametime);
end;

解决方案 »

  1.   

    create or replace procedure p_single_test(sid in char,gametime in char,gametype in char)  as
    begin 
    MERGE INTO single_test B
    USING (select sysdate as gametime from dual) E
    ON (b.game_time=E.gametime)
    WHEN MATCHED THEN
    update set game_type=gametype
    WHEN NOT MATCHED THEN
    INSERT  (b.id,b.game_time)
     VALUES (sid,gametime);
    end;
      

  2.   

    我的gametime,不是sysdate,是入参
      

  3.   

    create or replace procedure p_single_test(sid in char,gametime in char,gametype in char)  as
    begin 
    MERGE INTO single_test B
    USING (select gametime as gtime from dual) E
    ON (b.game_time=E.gtime)
    WHEN MATCHED THEN
    update set game_type=gametype
    WHEN NOT MATCHED THEN
    INSERT  (b.id,b.game_time)
     VALUES (sid,gametime);
    end;
      

  4.   

    传入的参数gametime只是一个参数,无法作为列名引用,给它取个别名:select gametime as gametime from dual
      

  5.   

    输入两个参数:
    select gametime1 as gametime, username1 as username  from dual就出错
    ORA-00600: 内部错误代码,参数: [15212], [1], [], [], [], [], [], []
      

  6.   

    libin_ftsafe(子陌红尘)还在吗?