我在oracle中编写存储过程。我使用的是Toad 10.6。我想结果得到一个记录。传递参数,这是id。 表TTEST 列:{ID,VALUE}。 我的代码:
CREATE OR REPLACE PROCEDURE GB.TTEST_GET
(
id NUMBER
)
IS
a NUMBER;
BEGIN
--DBMS_OUTPUT.PUT_LINE('TESTING PRINT' || 234);
SELECT ID INTO a FROM TTEST WHERE ID = id;
END TTEST_GET;
/
当我编译时,发现以下错误。 [错误] ORA-04044(29:27):PL / SQL:ORA-04044:此处不允许使用过程,函数,包或类型
答案 0 :(得分:0)
创建FUNCTION
,返回NUMBER
,然后使用SQL
进行调用。但回报应该是一行。
CREATE OR REPLACE FUNCTION GB.TTEST_GET (p_id NUMBER)
RETURN NUMBER
IS
a NUMBER;
BEGIN
--DBMS_OUTPUT.PUT_LINE('TESTING PRINT' || 234);
SELECT ID INTO a FROM TTEST WHERE ID = p_id;
RETURN a:
END TTEST_GET;
/
并称之为,
SELECT GB.TTEST_GET(id) FROM YOURTABLE;
答案 1 :(得分:0)
您可以使用OUT参数从过程返回结果。伪代码将如下所示
Create or replace procedure GB.TTEST_GET (p_id number, p_a OUT number)
is
Begin
SELECT ID INTO p_a FROM TTEST WHERE ID = p_id;
END GB.TTEST_GET ;
对于您的错误,请尝试使用适当的架构名称别名化表名。
希望它有助于
Vishad