在 pl/sql 中使用 SELECT 返回 2 行或更多行的简单方法

发布于 2024-10-16 07:59:08 字数 240 浏览 1 评论 0原文

我试图找出使用 pl/sql 中的 select 语句返回 2 行或更多行到 sqlplus 输出的最简单方法。这是一个基本示例。

begin
  select sysdate,'12345' xid from dual
    union all
  select sysdate,'67890' xid from dual;
end;
/

错误是“此 SELECT 语句中需要 INTO 子句”

I am trying to figure out the most simple way to return 2 or more rows using a select statement in pl/sql to the sqlplus output. Here is a basic example.

begin
  select sysdate,'12345' xid from dual
    union all
  select sysdate,'67890' xid from dual;
end;
/

Error is "an INTO clause is expected in this SELECT statement"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

二智少女猫性小仙女 2024-10-23 07:59:08

您可以使用游标返回查询结果:

SQL> VARIABLE x REFCURSOR
SQL> BEGIN
  2     OPEN :x FOR SELECT ROWNUM FROM dual CONNECT BY LEVEL <= 3;
  3  END;
  4  /

PL/SQL procedure successfully completed.

SQL> PRINT x

    ROWNUM
----------
         1
         2
         3

You would use a cursor to return the result of a query:

SQL> VARIABLE x REFCURSOR
SQL> BEGIN
  2     OPEN :x FOR SELECT ROWNUM FROM dual CONNECT BY LEVEL <= 3;
  3  END;
  4  /

PL/SQL procedure successfully completed.

SQL> PRINT x

    ROWNUM
----------
         1
         2
         3
恰似旧人归 2024-10-23 07:59:08

是的,您可以从 PL/SQL 返回 ResultSet。查看此网址

Yes, you can return a ResultSet from a PL/SQL. Take a look at this URL.

姜生凉生 2024-10-23 07:59:08

在 BEGIN-END 块中编写 SQL 代码时,无法在编辑器中显示其结果集。从查询中删除 BEGIN-END ,它会很高兴地显示结果。

基本上,BEGIN-END 块中的代码不用于显示结果,而是用于数据处理。因此,您应该简单地编写:

SELECT SYSDATE,'12345' XID FROM DUAL
UNION ALL
SELECT SYSDATE,'67890' FROM DUAL;

在 SQL 编辑器中显示结果集。

另请注意,我在第二个 SELECT 语句中删除了别名“XID”:您只需在 UNION/UNION ALL 语句中的第一个查询中提供列别名。

When writing a SQL code in a BEGIN-END block, you cannot display its result-set in the editor. Trim the BEGIN-END from your query, and it would happily display the results.

Basically, code within a BEGIN-END block is not used for displaying results, it is used for data processing instead. So you should simply write:

SELECT SYSDATE,'12345' XID FROM DUAL
UNION ALL
SELECT SYSDATE,'67890' FROM DUAL;

to display the result-set in your SQL editor.

Also notice that I removed alias "XID" in second SELECT statement: you need to give column aliases in only first query in a UNION/UNION ALL statement.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文