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 回答