Oracle程序,如何选​​择记录

时间:2014-01-22 03:39:28

标签: sql oracle stored-procedures oracle11g oracle-sqldeveloper

我在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:此处不允许使用过程,函数,包或类型

2 个答案:

答案 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