jsp页面中的代码
cs=conn.prepareCall("{call held('"+session.getAttribute("roll")+"')}");
cs.executeUpdate();
oracle数据库程序中的为
create or replace procedure "Held"
(s in Varchar2)
l_col_name varchar2(30);
begin
SELECT SUBJECTCODE
into l_col_name
FROM table02
WHERE SERIALNUMBER = '1';
execute immediate
'UPDATE TABLE01 SET '|| l_col_name || ' = '
|| l_col_name || ' + 1 WHERE Rollno = s'
;
end;
以下是错误
java.sql.SQLException: ORA-00904: "S": invalid identifier ORA-06512: at "ROHIT.HELD", line 12 ORA-06512: at line 1
请纠正它
我试图获取会话的值,即从jsp中的代码并尝试在oracle数据库中使用它.... 我使用s作为变量来存储该值并在where子句
中使用它提出解决方案
答案 0 :(得分:1)
我不知道jsp方面是否正确,但你的程序中明显有错误。
发生ORA-00904时,必须按原样输入有效的列名 丢失或输入的内容无效。
在这里,您的语句WHERE Rollno = s
被理解为'列rollno等于列s',但列s不存在。我想你只需要将s
移出字符串。
execute immediate
'UPDATE TABLE01 SET '|| l_col_name || ' = '
|| l_col_name || ' + 1 WHERE Rollno = ''' || s || ''''
;