0

我对 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);

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

4

1 回答 1

2

首先,我建议不要使用名为 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
...

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

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

于 2012-09-10T14:49:35.823 回答