【问题标题】:hsqldb call procedure from java来自java的hsqldb调用过程
【发布时间】:2018-03-02 16:27:32
【问题描述】:

我已经在 hsqldb 中创建了这个过程

create procedure insertarUsuario
(nombre varchar(50), apellidos varchar(50), usuariowin varchar(10),xlnet varchar(10), correo varchar(150), planta integer, telefono integer)
MODIFIES SQL DATA
BEGIN ATOMIC
INSERT INTO USUARIOS VALUES(nombre, apellidos, usuariowin, xlnet,correo,planta,telefono);
end;

从java我调用这个过程

public static void main(String[] args) 抛出 SQLException { ConexionBBDD con = new ConexionBBDD();

    String sql = "{call public.insertarUsuario(?,?,?,?,?,?,?)}";

    CallableStatement cs = con.getConnection().prepareCall(sql);

        cs.setString(1, "esto");
        cs.setString(2, "es");
        cs.setString(3, "una");
        cs.setString(4, "prueba");
        cs.setString(5, "insercion");
        cs.setInt(6, 1);
        cs.setInt(7, 2);

        cs.execute();
        cs.close();

        con.desconexionBBDD();  
}  

但不工作。

`Exception in thread "main" java.sql.SQLSyntaxErrorException: user does not have sufficient privileges or object not found: INSERTARUSUARIO
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
    at org.hsqldb.jdbc.JDBCCallableStatement.<init>(Unknown Source)
    at org.hsqldb.jdbc.JDBCConnection.prepareCall(Unknown Source)
    at ventanas.pruebaConexion.main(pruebaConexion.java:28)
Caused by: org.hsqldb.HsqlException: usuario no tiene privilegios suficientes o objeto no encontrado: INSERTARUSUARIO
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.ParserDQL.readColumnOrFunctionExpression(Unknown Source)
    at org.hsqldb.ParserDQL.XreadSimpleValueExpressionPrimary(Unknown Source)
    at org.hsqldb.ParserDQL.XreadAllTypesValueExpressionPrimary(Unknown Source)
    at org.hsqldb.ParserDQL.XreadAllTypesPrimary(Unknown Source)
    at org.hsqldb.ParserDQL.XreadAllTypesFactor(Unknown Source)
    at org.hsqldb.ParserDQL.XreadAllTypesTerm(Unknown Source)
    at org.hsqldb.ParserDQL.XreadAllTypesCommonValueExpression(Unknown Source)
    at org.hsqldb.ParserDQL.XreadValueExpression(Unknown Source)
    at org.hsqldb.ParserDML.compileCallStatement(Unknown Source)
    at org.hsqldb.ParserCommand.compilePart(Unknown Source)
    at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
    at org.hsqldb.Session.compileStatement(Unknown Source)
    at org.hsqldb.StatementManager.compile(Unknown Source)
    at org.hsqldb.Session.execute(Unknown Source)
    ... 4 more`

请帮帮我。

【问题讨论】:

    标签: java stored-procedures call hsqldb


    【解决方案1】:

    错误信息表示数据库用户没有调用该过程的权限。如果 PUBLIC 用户正在调用该过程,则此语句授予特权。对于其他用户,请将 PUBLIC 替换为用户名。

    GRANT ALL ON insertarUsuario TO PUBLIC
    

    当 GRANT 失败并显示“用户缺少权限或找不到对象”时,它表明正在使用另一个数据库的路径。

    【讨论】:

    • GRANT ALL ON my_procedure TO PUBLIC; 给出错误消息[SET - 0 rows, 0.002 secs] [Code: -5501, SQL State: 42501] user lacks privilege or object not found: MY_PROCEDURE in statement [GRANT ALL ON my_procedure TO PUBLIC]
    猜你喜欢
    • 2011-07-13
    • 2015-10-05
    • 2018-04-14
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 2015-04-26
    • 2015-03-31
    相关资源
    最近更新 更多