开发者社区> 问答> 正文

JAVA 调用存储过程出错。提示:ORA-00917: missing comm?400报错

JAVA 调用存储过程出错。提示:ORA-00917: missing comma(丢失逗号)? 400 报错

//我的JAVA调用代码为: Connection conn = UtilDB.getInstance().getConnection(); String call= "{call P_USERMAP(?,?)}"; CallableStatement pst = conn.prepareCall(call); pst.setString(1,"INSERT INTO USERMAP(OBJID,USERNAME) VALUES(USERMAPS.NEXTVAL,''**********'') returning OBJID into :1"); pst.registerOutParameter(2,Types.VARCHAR); pst.execute();

//提示:ORA-00917: missing comma(丢失逗号) 找不出原因不知道为什么请高手回答。

##存储过程为#######
create or replace
procedure P_UserMap(v_sql in varchar, id out varchar) is
begin
  execute immediate v_sql returning into id;
end P_UserMap;

###调用方式为:
DECLARE
  V_SQL VARCHAR2(200);
  ID VARCHAR2(200);
BEGIN
  V_SQL := 'INSERT INTO USERMAP(OBJID,USERNAME) VALUES(USERMAPS.NEXTVAL,''******'')   returning OBJID into :1';

  P_USERMAP(
    V_SQL => V_SQL,
    ID => ID
  );
  DBMS_OUTPUT.PUT_LINE('ID = ' || ID);
END;
######返回结果为:ID = 742

展开
收起
爱吃鱼的程序员 2020-05-30 23:46:26 607 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    为什么测试通过的存储过程在JAVA中再调用就会提示缺少逗号?

    找不出原因。

    ######

    多单引号

    ######

    1. 当前数据库为:9i 我用的jdbc连接包是 10g的。

    2. 插入语名不能带两个单引号:查询应改为:insert into usermap(id,***) values(usermaps.nextval,'*****') returning id into :1的形式

    所以产生了上述情况。

    2020-05-30 23:46:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载