0

レコードを一時テーブルに挿入し、レコードを選択して返す SP があります。SQLはこれです。

INSERT INTO ステートメントを削除し、SQL を最小化してトラブルシューティングを行いました。犯人は SELECT * FROM #Worklist1 です。なぜこれが機能しないのかわかりません。Pervasive サーバー バージョン 10 の最新バージョンにアップグレードしましたが、これで問題が解決する場合がありますが、この問題は 10.3 にあり、まだ残っています。何かが欠けているに違いない。

CREATE PROCEDURE "Connect_Workflow"(
     :StartDate DATETIME, :EndDate DATETIME)
     RETURNS(Patient varchar(100) , 
        AccessionNo varchar(25)  
        );
BEGIN
    CREATE TABLE #WorkFlow1
        (Patient varchar(100) null, 
        AccessionNo varchar(25) null 
    );  
    INSERT INTO #Workflow1(
      SELECT 
        rtrim(p.LastName),--+ '^' + rtrim(p.FirstName) + isnull('^' + rtrim(p.Initial), ''),
        v.VisitID   -- equiv to EncounterID
    FROM visit v
    join patient p on v.patientnumber = p.patientnumber
    WHERE v.VisitYY = '99'
    );

    SELECT * FROM #WorkFlow1;
    DROP TABLE #Workflow1;


END

更新: SELECT * FROM #Worklist1; をコメントアウトした後。それでも無効なテーブルエラーが発生します。INSERT INTO と SELECT * を削除すると、最終的にエラーはなくなります。テーブルの参照にエラーがあるはずです。

4

2 に答える 2

1

DROP TABLE #Workflow1; を削除します。あなたのクエリから。
SPがデータを返す前にテーブルを削除していると思います。

于 2011-03-17T16:12:24.027 に答える
0

わかりました。この手順は問題なく機能するはずですが、実際、Pervasive は次のような方法を推奨しています。SELECT INTO を使用する

CREATE PROCEDURE "Connect_Workflow"(
     :StartDate DATETIME, :EndDate DATETIME)
     RETURNS(Patient varchar(100) , 
        AccessionNo varchar(25)  
        );
BEGIN
    SELECT 
        rtrim(p.LastName),--+ '^' + rtrim(p.FirstName) + isnull('^' + rtrim(p.Initial), ''),
        v.VisitID   -- equiv to EncounterID
    FROM visit v
    INTO #Workflow1
    join patient p on v.patientnumber = p.patientnumber
    WHERE v.VisitYY = '99'
    );
    SELECT * FROM #WorkFlow1;
END
于 2011-03-17T18:28:12.703 に答える