【发布时间】:2013-07-25 00:41:27
【问题描述】:
请告诉我如何使用可调用语句通过 JDBC 调用嵌套过程。我想将(1 个字符串和 1 个整数)存储到运行时创建的表中。
create or replace procedure mytable (
Ptable_name in varchar2
, Pemp_name in varchar2
, Pemp_age in number
) is
procedure myvalues (
Pemp_name in varchar2
, Pemp_age in number
) is
begin
execute immediate 'insert into ' || Ptable_name
|| ' values (:emp_name, :emp_age)'
using Pemp_name, Pemp_age;
end;
begin
execute immediate 'create table ' || Ptable_name
|| ' (sname varchar2(20), sage number (4))';
myvalues ( Pemp_name, Pemp_age);
end;
【问题讨论】:
-
为什么要在运行时创建表?调用嵌套过程是什么意思?您想直接调用
myvalues,而不是调用mytable并调用私有内部插入过程?或者您只是想知道如何拨打mytable?无论哪种方式,您都尝试过什么? -
“它不起作用”不是错误消息,也不能帮助我们帮助您。请将您的 Java 代码以及错误和堆栈跟踪添加到问题中,以便我们查看您做错了什么。
-
我尝试使用可调用语句通过 (begin mytable(+tablename+,+username+,+age+); end; ) 调用 mytable,但它不起作用。我正确地引用了变量?
-
ok.. 这是 java 代码 public class loginuser { public String tablename;公共字符串用户名;公共整数年龄;公共字符串执行(){连接CON;语句 stmt;尝试 { Class.forName("oracle.jdbc.driver.OracleDriver"); con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","Gaurav","oracle"); stmt=con.createStatement(); callablestatement cs=con.preparecall("HOW TO CALL A PROCEDURE ?");