call 存储过程() 报错
时间: 2023-07-08 17:14:18 浏览: 119
如果你在调用 PostgreSQL 存储过程时遇到了 `call 存储过程()` 报错,可能是因为 PostgreSQL 不支持使用 `CALL` 语句来调用存储过程。
正确的方法是使用 `SELECT` 语句来调用存储过程,如下所示:
```
SELECT my_stored_proc(argument1, argument2, ...);
```
其中,`my_stored_proc` 是你要调用的存储过程名称,`argument1`、`argument2` 等是传递给存储过程的参数。
如果存储过程没有返回值,那么 `SELECT` 语句也不会返回任何值。
希望这个回答能够解决你的问题!
相关问题
查看存储过程报错信息
要查看存储过程的报错信息,可以通过以下步骤进行操作。首先,创建一个存储过程,其中包含异常处理部分,将错误信息插入到一个错误记录表中。在存储过程中,使用dbms_output.put_line函数将错误代码和错误信息打印出来。然后,执行该存储过程,并查看错误记录表中的信息。
在给出的示例中,存储过程名为test.pr_error_code_test,它接受一个参数TEST。在存储过程中,首先将参数值插入到表TEST.DMTEST01中,如果发生异常,则将错误代码、错误信息和当前时间插入到表TEST.T_PROC_ERRMSG中。最后,使用dbms_output.put_line函数将错误代码打印出来。
要执行存储过程并查看报错信息,可以使用以下命令:
```
call "TEST"."PR_ERROR_CODE_TEST"('a');
```
这将执行存储过程,并将参数设置为字符串'a'。接下来,可以使用以下命令查看异常记录信息:
```
select * from "TEST"."T_PROC_ERRMSG";
```
这将从表TEST.T_PROC_ERRMSG中检索所有的记录,包括错误代码、错误信息和记录时间。
通过执行存储过程并查看错误记录表,您可以获取存储过程中的报错信息,以便进行问题排查和修改。
为什么call 存储过程() 报错
在 PostgreSQL 中,`CALL` 语句并不是标准的 SQL 语法,因此 PostgreSQL 不支持使用 `CALL` 语句来调用存储过程。
相反,你应该使用 `SELECT` 语句来调用存储过程。例如,如果你要调用名为 `my_stored_proc` 的存储过程,可以使用以下语句:
```
SELECT my_stored_proc(argument1, argument2, ...);
```
其中,`argument1`、`argument2` 等是传递给存储过程的参数。
如果你仍然使用 `CALL` 语句来调用存储过程,那么它会被 PostgreSQL 解释为一条查询语句,但是由于没有指定结果集的目标,所以会报错 `query has no destination for result data`。
因此,如果你想调用存储过程并且不需要返回结果集,可以使用 `SELECT` 语句并将结果集丢弃,如下所示:
```
SELECT my_stored_proc(argument1, argument2, ...) INTO dummy_variable;
```
其中,`dummy_variable` 可以是任意变量名,用于接收结果集,但是由于不需要使用结果集,因此可以忽略它。
希望这个回答能够解决你的问题!
阅读全文