请看一下下面的创建触发器的sql语句,在plsql下面执行没有问题,但是我放到java程序里执行时就发生错误,错误提示是java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
运行的环境是weblogic813+oracle10g,通过weblogic获得数据库连接,在ejb中执行
请高手帮忙看看这是怎么回事儿,谢谢!CREATE OR REPLACE TRIGGER USER1.AA
BEFORE insert ON USER1.TABLE1
FOR each row
BEGIN
IF INSERTING THEN
INSERT INTO USER2.BB
(C1,
C2,
C3,
C4)
VALUES
('2A',
:NEW.C2,
:NEW.C3,
:NEW.C4);
END IF;
END AA;
运行的环境是weblogic813+oracle10g,通过weblogic获得数据库连接,在ejb中执行
请高手帮忙看看这是怎么回事儿,谢谢!CREATE OR REPLACE TRIGGER USER1.AA
BEFORE insert ON USER1.TABLE1
FOR each row
BEGIN
IF INSERTING THEN
INSERT INTO USER2.BB
(C1,
C2,
C3,
C4)
VALUES
('2A',
:NEW.C2,
:NEW.C3,
:NEW.C4);
END IF;
END AA;
StringBuffer sb = new StringBuffer(1024); sb.append("CREATE OR REPLACE TRIGGER USER1.AA ")
.append("BEFORE insert ON USER1.TABLE1 ")
.append("FOR each row ")
.append("BEGIN ")
.append("IF INSERTING THEN ")
.append("INSERT INTO USER2.BB(C1, C2, C3, C4) ")
.append("VALUES('2A', :NEW.C2, :NEW.C3, :NEW.C4);")
.append("END IF; ")
.append("END SYN_GROUPS_ENTRY;");
Connection con = null;
PreparedStatement pstmt = null;
try {
con = JNDIConfiguration().getDbAdminConnection();
pstmt = conn.prepareStatement(sb.toString();
pstmt.executeUpdate();
}
catch()
finally {
}
被他认为了是参数,但是因为你没有设置参数,所以,有这个错误。直接用Statement.executeQuery(sql)就可以了,她不会解析参数的。赫赫。
上面漏了半边括号