【问题标题】:Select in Oracle Stored Procedure raises PLS-00428Oracle 存储过程中的选择引发 PLS-00428
【发布时间】:2012-09-03 10:55:06
【问题描述】:

我是 Oracle 的新手,我被安排在一个需要我使用它的项目上。我正在尝试创建一个新的存储过程,select 语句有效,但是当我运行整个过程时,它会说:

[错误] PLS-00428 (8: 9): PLS-00428: 在这个 SELECT 语句中需要一个 INTO 子句

代码如下:

CREATE PROCEDURE SSACHDEV.CheckServiceProviderDownload
as

tempInt number;

BEGIN

    Select 
        distinct(trunc(dateStamp)), 
        SVCProviderSTTSSEQID, 
        CaseNbr 
        into 
        "Date",
        PrividerId,
        CaseNumber
    from SVCProviderSTTS 
    Where (trunc(datestamp) between trunc(sysdate - 1) and trunc(sysdate));




   -- tskmgr.task_priority_download (CaseNumber, Id, tempInt);

END;

我想我必须创建一个临时表来存储结果,然后做一个游标来调用我已注释掉的下一个过程,称为 tskmgr.task_priority_download(CaseNumber, Id, tempInt);

任何帮助将不胜感激。非常感谢。

【问题讨论】:

  • UPDATE 我要做的是从 select 语句中获取结果,并将每个结果传递给 tskmgr.task_priority_download (CaseNumber, Id, tempInt);我认为这很简单,但事实证明它具有挑战性,再次对此提供任何帮助都会很棒,再次感谢。

标签: oracle stored-procedures


【解决方案1】:

首先,我建议不要使用名为 date 的本地临时变量。在我看来,像 myDate 或 Date1 或其他任何东西会更好。

其次,您必须声明这些变量——Date、ProviderId 和 Casenumber。

例如,

CREATE PROCEDURE...
as
   tempInt NUMBER;
   myDate NUMBER;
   caseNumber VARCHAR2(100);
   ProviderId NUMBER;
BEGIN
...

最后,尽管这会让事情变得有点冗长,我还是倾向于给变量加前缀,这样我就可以知道它们是变量。例如,我可能会这样做,但有些人会告诉我这是浪费和不必要的。

CREATE PROCEDURE...
as
   tempInt NUMBER;
   l_Date NUMBER;
   l_caseNumber VARCHAR2(100);
   l_ProviderId NUMBER;
BEGIN
...

以这种方式命名我的变量可以让我更容易理解当我在执行连接或 where 子句并且列名与我的变量相同时 - 你这样做。

我对错误消息有点困惑。如有必要,我会再看一下并更新我的答案。

【讨论】:

  • 谢谢,我已经创建了这些变量,但我仍然收到同样的错误。
  • 我想我需要一个表来存储这些值,所以 table = select 语句
  • 您不一定需要一张桌子。但是,我可能错过了一些东西。您期待 1 个结果吗?还是一堆?如果是一堆,这不是这样做的方法。您应该使用游标选择值作为记录的一部分,然后将记录发送到存储过程。如果这是您想要做的,请告诉我,我会更新我的答案并提供有关如何执行此操作的信息。
  • 这确实是我想要做的(多个值),我想了想,我发现我做错了。我现在正在使用光标,并且认为我即将完成,但我收到错误 [Error] PLS-00103 (29: 7): PLS-00103: Encountered the symbol "end-of-文件”当期望以下之一时:; delete exists prior Th 我的代码看起来像
  • 我更近了,唯一的错误是:[错误] PLS-00904 (26: 13): PLS-00904: 访问对象PUBLIC.TSKMGR的权限不足跨度>
猜你喜欢
  • 2015-02-07
  • 2013-01-07
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2011-05-14
  • 2015-05-02
相关资源
最近更新 更多