Sql Oracle过程,如何选择记录

Sql Oracle过程,如何选择记录,sql,oracle,stored-procedures,oracle11g,oracle-sqldeveloper,Sql,Oracle,Stored Procedures,Oracle11g,Oracle Sqldeveloper,我正在用oracle编写存储过程。我用的是蟾蜍10.6。我想要一张唱片。传递一个参数,这是id。 表T测试 列:{ID,VALUE}。 我的代码: 当我编译时,出现了以下错误。 [错误]ORA-04044 29:27:PL/SQL:ORA-04044:此处不允许使用过程、函数、包或类型创建一个返回数字的函数,然后使用SQL调用它。但是返回应该是一行 CREATE OR REPLACE FUNCTION GB.TTEST_GET (p_id NUMBER) RETURN NUMBER IS a N

我正在用oracle编写存储过程。我用的是蟾蜍10.6。我想要一张唱片。传递一个参数,这是id。 表T测试 列:{ID,VALUE}。 我的代码:

当我编译时,出现了以下错误。 [错误]ORA-04044 29:27:PL/SQL:ORA-04044:此处不允许使用过程、函数、包或类型创建一个返回数字的函数,然后使用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;

可以使用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

对参数中使用的变量有不同的名称,因为它与表的列名冲突!不是此错误的原因,但给出了错误的结果。此过程是否有其他名为TTEST\u GET或TTEST的对象可访问?尝试从所有对象中运行select*,其中对象名称位于“TTEST\U GET”和“TTEST”中;我根据您的建议更新了我的代码,然后发现以下错误:[error]语法检查2:1:found:'RETURN'预期为:AS IS-or-AUTHID DETERMINISTIC PARALLEL\u enable希望您没有在函数名旁边包含参数。@tugsbayarbuyada您能加入聊天吗?我更新了我的代码。发现以下错误:[错误]ORA-04044 26:29:PL/SQL:ORA-04044:不允许使用过程、函数、包或类型here@Tugsbayar:您是否在过程中使用了表名别名?也可以请你张贴更新的代码。p_id号应该是p_id号
           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 ;