Я получаю эту ошибку, пожалуйста, 00103 при использовании NetBeans - PullRequest
0 голосов
/ 17 марта 2019

Я установил соединение с моей базой данных Oracle с помощью системы имен пользователей

Соединение установлено успешно, и я могу выполнять все основные операции SQL, такие как вставка, обновление, удаление ... но я не могу выполнить свои хранимые процедуры. Хотя я пытаюсь вызвать мою хранимую процедуру из 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, «Хар», «м», «12 апреля 2000», «студент»);

Я получаю предполагаемое о / п. Но когда я делаю то же самое в NetBeans Я не получаю предполагаемый оп, но какая-то ошибка.

Ошибки: это ошибка, которую я получаю:
Error Msg i'm getting in netbeans here

Быстрая помощь приветствуется. Заранее спасибо ...

1 Ответ

2 голосов
/ 17 марта 2019

Javadoc CallableStatement говорит:

Интерфейс, используемый для выполнения хранимых процедур SQL. JDBC API предоставляет синтаксис экранирования SQL хранимых процедур, который позволяет стандартным образом вызывать хранимые процедуры для всех СУБД. Этот escape-синтаксис имеет одну форму, которая включает в себя параметр результата, а другую - нет. Если используется, параметр результата должен быть зарегистрирован как параметр OUT. Другие параметры могут быть использованы для ввода, вывода или обоих. Параметры указываются последовательно, по номеру, причем первый параметр равен 1.

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

Как видите, аргументы разделены запятыми, как и любой синтаксис для передачи параметров в функцию / процедуру / метод на любом языке.

Это означает, что ваш код должен быть:

CallableStatement cs = con.prepareCall("{call calc(?,?,?,?,?,?)}");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...