0

我正在尝试创建存储过程,我想在其中加入两个表并将结果保存到其中一个表中,但是我收到 INTO 子句是必需的错误。

这是我的代码:

CREATE PROCEDURE DiorItemMaster
AS
SELECT *FROM pcdo_dior_item_master
INNER JOIN pcdo_itemdata on pcdo_itemdata.vpn = pcdo_dior_item_master.vpn;
GO;

错误:

错误(4,1):PLS-00428:此 SELECT 语句中应有一个 INTO 子句

4

1 回答 1

2

您有一个从 pl/sql 块中的表中选择列的查询。您想对该查询的结果做什么?你不能只选择而不对 pl/sql 中的结果做任何事情(你可以在 sql 中)。Oracle 希望您将该选择的结果存储在变量中。这可以使用该SELECT INTO子句来完成。示例(基于示例模式 emp/dept):

DECLARE
  l_emp emp%ROWTYPE;
BEGIN
  SELECT e.* INTO l_emp FROM emp e WHERE e.ename = 'KING';
END;
/

请注意,您可以SELECT INTO单独列和行。您不能使用SELECT INTO数组。

关于您的代码的其他几点说明:

  • 您可以在SELECT *不使用别名的情况下从一个表连接到另一个表。这将返回两个表中的所有列。使用示例中的表别名作为前缀“*”会更具可读性。
  • GO;不是 oracle 语法的一部分 - 这将导致编译错误。
于 2021-06-08T11:23:58.307 回答