Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java上的PL SQL似乎陷入了困境_Java_Sql_Jdbc_Plsql - Fatal编程技术网

Java上的PL SQL似乎陷入了困境

Java上的PL SQL似乎陷入了困境,java,sql,jdbc,plsql,Java,Sql,Jdbc,Plsql,我有下面的代码,它似乎不工作 CallableStatement cs = dbc.prepareCall("" + "DECLARE " + "transno numeric (9,0); " + "jobno numeric (9,0); " + "supcost numeric (9,0); " +

我有下面的代码,它似乎不工作

CallableStatement cs = dbc.prepareCall("" +
                    "DECLARE " +
                    "transno numeric (9,0); " +
                    "jobno numeric (9,0); " +
                    "supcost numeric (9,0); " +
                    "message varchar (20) := 'All good'; " +
                    "BEGIN " +
                    "transno := ?; " +
                    "jobno := ?; " +
                    "supcost := ?; " +
                    "INSERT INTO JOB_TRANSACTION" +
                    "   VALUES (transno, jobno); " +
                    "INSERT INTO TRANSACTION " +
                    "   VALUES (transno, supcost); " +
                    "UPDATE ASSEMBLY_ACC ac" +
                    "   SET cost = cost + supcost " +
                    "   WHERE EXISTS(SELECT * FROM Manufacturing m WHERE m.job_no = jobno and m.assembly_id = ac.assembly_id); " +
                    "? := message; " +
                    "END;");
            cs.setInt(1, Integer.parseInt(trans_no));
            cs.setInt(2, Integer.parseInt(job_no));
            cs.setInt(3, Integer.parseInt(sup_cost));
            cs.registerOutParameter(4, Types.VARCHAR);
            cs.execute();
            System.out.println(cs.getString(4));
其中trans_no、job_no和sup_cost都是已经包含值的字符串

我认为它被困在UPDATE语句中,但是我想不出另一种方式来表达这种情况

我打算做的是,每次进行具有各自供应成本支持成本的交易时,它都会同时更新三个账户的成本,其中一个账户是Assembly\u Acc\u no,Assembly\u id,cost for Simply,为了简单起见,我们只会处理一个账户,为了知道更新哪个Assembly\u Acc,我们查找表制造作业号、装配id等。。对于查询中包含job\u no jobno的程序集\u id,它是主键,并且我们已经从一开始就开始计数。一旦找到assembly_id,它将用于区分所有恰好具有唯一assembly_id的assembly_Acc


我希望这听起来不复杂,但你能帮我把它弄得更好吗?我真的很急,不知道该怎么做。

您的PL/SQL代码应该放在一个存储过程中,然后java CallableStatement将调用该过程,并将transno、jobno和supcost作为参数传入

见这个问题:

您是否分别检查了SQL语句,以确保它们是正确的,并执行您想要的操作?我没有单独检查update语句,但其他两个都可以正常工作。数据库中有很多键引用,所以这也有点困难。如果你说,没有update语句,一切正常,我建议你确保update语句正常工作。不确定cost=cost+supcost是否有效。可能是成本=从XY+supcostThank中选择成本谢谢,虽然我没有得到我读到的所有内容,但我尝试了一下,它解决了问题。