我在oracle中编写了简单的存储过程。但它显示了使用编译错误创建的过程。
我的代码是:
CREATE OR REPLACE PROCEDURE PRC_SELECT
AS
BEGIN
SELECT * FROM tb_name;
END;
/
请帮我解决这个问题。
答案 0 :(得分:2)
这是一个非常基本的骨架,符合您的要求。
CREATE OR REPLACE PROCEDURE PRC_SELECT(p_OLD IN VARCHAR2)
AS
my_rec tb_name%rowtype;
BEGIN
SELECT * into my_rec FROM tb_name WHERE old = p_OLD;
END;
/
my_rec
将创建为PL/SQL
类型,其结构将为表tb_name
的结构!
答案 1 :(得分:0)
程序无法选择*返回屏幕。 你必须将它批量收集到一个集合中并返回它或打开一个光标并返回它。 一个过程是pl / sql,它不直接写入屏幕。 如果需要,可以使用dbms_output.put_line写入每条记录。 您可能还想查看流水线函数,稍后可以在SQL中使用它们。 这取决于你的要求是什么。
答案 2 :(得分:0)
如果您真的想阅读tb_name
中的所有行,可以尝试:
CREATE OR REPLACE PROCEDURE PRC_SELECT
AS
BEGIN
FOR aRow IN (SELECT * FROM tb_name)
LOOP
DBMS_OUTPUT.PUT_LINE('Retrieved ' || aRow.SOME_FIELD);
END LOOP;
END;
请注意,如果tb_name
中有很多行,这可能会产生大量输出。
分享并享受。