使用 Java 调用 PL/SQL 函数时参数类型或数量错误.PLS-00306 错误


try{
        Statement stmt = conn.createStatement();
            stmt.execute("CREATE OR REPLACE FUNCTION log(p_user IN VARCHAR2, p_password IN VARCHAR2, p_name IN VARCHAR2 ) "
                    + "RETURN number "
                    + "IS "
                    + "flag login%ROWTYPE; "
                    + "temp number; "
                    + "BEGIN "
                    + "select username into flag "
                    + "from login "
                    + "where username=p_user and password=p_password and name=p_name; "
                    + "IF (sql%found) THEN temp:= 1; "
                    + "ELSE temp:= 0; "
                    + "END IF; "
                    + "return temp; "
                    + "END; ");
            stmt.close();
            String value = Combo_Name.getSelectedItem().toString();
            String sql= "begin "
                    + "?:=log(?,?,?); "
                    + "end; ";
            CallableStatement cstmt = conn.prepareCall (sql);
            cstmt.registerOutParameter (1, OracleTypes.NUMBER);
            cstmt.setString(2, user_id.getText());
            cstmt.setString (3, password.getText()); 
            cstmt.setString(4, value);
            cstmt.execute();
            int check =cstmt.getInt(1);
             if(check==1)
            {
                JOptionPane.showMessageDialog(null, "Login Successful");
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Invalid Username or Password");
            }
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
}        

调用函数时显示pls-00306错误。每次它显示错误的参数类型或数量时。请帮助我解决错误。变量值用于从组合框中获取输入。

您正在与返回n1的对、基数n2的内置函数LOG(n2,n1)冲突。

使用其他名称。

相关内容

最新更新