簡體   English   中英

使用Netbeans時出現此錯誤pls 103103

[英]I'm getting this error pls 00103 when using netbeans

我已經使用用戶名系統建立了到oracle數據庫的連接

連接成功,我可以執行所有基本的sql操作,例如insert,update,delete ...,但是我無法執行存儲過程。 當我嘗試從netbeans調用存儲過程時,出現了一些錯誤。 請幫助我解決這個問題。

netbeans按鈕執行代碼

    int eid = Integer.parseInt(eidtf.getText());
    String ename = enametf.getText();
    String dob = dobtf.getText();

    String sex = male.getText();
    if (female.isEnabled() == true) {
        sex = female.getText();
    }

    String designation = destf.getText();
    int basic = Integer.parseInt(basictf.getText());

    //String sql = "exec calc(" +eid +","+ basic +",'"+ ename +"','"+ sex +"','"+ dob +"','"+ designation +"')";

    try {
        CallableStatement cs = con.prepareCall("{call calc(? ? ? ? ? ?)}");

        cs.setInt(2, 50);
        cs.setInt(1, 126);
        cs.setString(3, ename);
        cs.setString(4, sex);
        cs.setString(5, dob);
        cs.setString(6, designation);

        cs.execute();

        JOptionPane.showMessageDialog(this, "Insertion has been done successfully!!!");
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(this, "Error: " + ex.getMessage() + "\nCause: " + ex.getCause() + "\nError Code: " + ex.getErrorCode() + "\nStack: " + ex.getClass());
    }

下表和步驟:

create table emp_payroll
(eid number(4) primary key,
ename varchar(20),
dob date,
sex char(1),
designation varchar(20),
basic number(5,2),
da number(5,2),
hra number(5,2),
pf number(5,2),
mc number(5,2),
gross number(5,2),
ded number(5,2),
net_pay number(5,2)
);

create or replace procedure calc
(x_eid in emp_payroll.eid%type :=123,
x_basic in emp_payroll.basic%type,
x_name in emp_payroll.ename%type,
x_sex in emp_payroll.ename%type,
x_dob in emp_payroll.ename%type,
x_des in emp_payroll.ename%type
)
as

x_da  emp_payroll.basic%type;
x_hra  emp_payroll.basic%type;
x_pf  emp_payroll.basic%type;
x_mc  emp_payroll.basic%type;
x_gross  emp_payroll.basic%type;
x_ded  emp_payroll.basic%type;
x_net_pay  emp_payroll.basic%type;

begin

    x_da:=.6* x_basic;
    x_hra:=.6* x_basic;
    x_pf:=.6* x_basic;
    x_mc:=.6* x_basic;
    x_gross:=x_basic+x_da+x_hra;
    x_ded:=x_pf+x_mc;
    x_net_pay:=x_gross-x_ded;
  insert into emp_payroll values(x_eid,x_name,x_dob,x_sex,x_des,x_basic,x_da,x_hra,x_pf,x_mc,x_gross,x_ded,x_net_pay) ;

end calc;
/

當我在sqlplus中運行以下命令時:

exec calc(123,50,'Har','m','12-apr-2000','student');

我正在獲取預期的o / p。 但是,當我在netbeans中執行相同操作時,我沒有得到預期的操作,但出現了一些錯誤。

錯誤:這是我得到的錯誤:
錯誤消息我在這里進入netbeans

快速幫助表示贊賞。 提前致謝...

CallableStatement的Javadoc說:

用於執行SQL存儲過程的接口。 JDBC API提供了存儲過程SQL轉義語法,該語法允許所有RDBMS以標准方式調用存儲過程。 此轉義語法的一種形式包含結果參數,而另一種形式不包含結果參數。 如果使用,則結果參數必須注冊為OUT參數。 其他參數可用於輸入,輸出或兩者。 參數按編號順序引用,第一個參數為1。

 {?= call <procedure-name>[(<arg1>,<arg2>, ...)]} {call <procedure-name>[(<arg1>,<arg2>, ...)]} 

如您所見,參數用逗號分隔,幾乎與任何以任何語言將參數傳遞給函數/過程/方法的語法相同。

這意味着您的代碼應為:

CallableStatement cs = con.prepareCall("{call calc(?,?,?,?,?,?)}");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM