![](/img/trans.png)
[英]ORA-06550: line 1, column 7 (PL/SQL: Statement ignored) Error
[英]ERROR at line 10: PL/SQL: Statement ignored
我正在尝试在oracle pl / sql上创建一个过程,但出现错误。
我的过程的代码是:
CREATE OR REPLACE PROCEDURE PR_LISTA_CLI (cpf IN VARCHAR2, p_rc OUT SYS_REFCURSOR)
IS
checkCpf NUMBER;
BEGIN
SELECT COUNT(CPF_CLIENTE) INTO checkCpf FROM CLIENTE WHERE CPF_CLIENTE = cpf;
IF (checkCpf > 0) THEN
open p_rc
for
select
com.data_compra,
lst.qde_produto,
prd.nome_produto,
prd.valor_produto * lst.qde_produto
from cliente cli
inner join compra com on cli.cod_cliente = com.cod_cliente
inner join lista_produto lst on com.cod_compra = lst.cod_compra
inner join produto prd on lst.cod_produto = prd.cod_produto
WHERE cli.cpf_cliente = cpf
order by com.data_compra asc;
ELSE
RAISE_APPLICATION_ERROR(-20999,'ERRO! Cpf não cadastrado!', FALSE);
END IF;
END;
该过程创建成功,没有错误。
但是我在调用它后得到了错误-CALL PR_LISTA_CLI(111111111);
ORA-00911: invalid character
请问如何解决?
谢谢!!!
您的编译错误在第10行,这是您执行SELECT
。 除非您使用的是12.1或更高版本,并且希望使用新的隐式语句结果功能,否则除非有将结果提取到其中的内容(例如[BULK COLLECT] INTO
子句),否则您不能在PL / SQL块中具有SELECT
语句。您正在使用SELECT
语句打开游标。 假设您的查询返回多行,并且您打算将游标返回给调用者,则可以执行以下操作
CREATE OR REPLACE PROCEDURE PR_LISTA_CLI (cpf IN VARCHAR2, p_rc OUT SYS_REFCURSOR)
IS
vEXCEPTION EXCEPTION;
checkCpf NUMBER;
BEGIN
SELECT COUNT(CPF_CLIENTE) INTO checkCpf FROM CLIENTE WHERE CPF_CLIENTE = cpf;
IF (checkCpf > 0) THEN
open p_rc
for
select
com.data_compra,
lst.qde_produto,
prd.nome_produto,
prd.valor_produto * lst.qde_produto
from cliente cli
inner join compra com on cli.cod_cliente = com.cod_cliente
inner join lista_produto lst on com.cod_compra = lst.cod_compra
inner join produto prd on lst.cod_produto = prd.cod_produto
WHERE cli.cpf_cliente = cpf
order by com.data_compra asc
ELSE
RAISE vEXCEPTION;
END IF;
EXCEPTION
WHEN vEXCEPTION THEN
RAISE_APPLICATION_ERROR(-20999,'ERRO! Cpf não cadastrado!', FALSE);
END;
现在,如果那是你在做什么
sys_refcursor
的函数会更有意义。 vException
中间人,删除异常处理程序和vException
变量,然后在您的ELSE
子句中调用RAISE_APPLICATION_ERROR
(假设首先在这种情况下抛出异常确实有意义)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.