0

私はオラクルに非常に慣れていないので、オラクルを使用する必要のあるプロジェクトに携わっています。新しいストアドプロシージャを作成しようとしていますが、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
...

このように変数に名前を付けると、結合句またはwhere句を実行しているときに理解しやすくなり、列名が変数と同じになります。

エラーメッセージについては少し混乱しています。もう一度見て、必要に応じて答えを更新します。

于 2012-09-10T14:49:35.823 に答える