我有一個將記錄插入臨時表的SP,然後選擇記錄並返回它們。 SQL是這樣的。在臨時表上執行查詢時無效的表或對象(Pervasive 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 *,那麼最後錯誤消失了。在引用表時必須是錯誤的。
當我刪除DROP TABLE時,SP會觸發一次。當我再次開槍時,它抱怨表已經存在。當我在CREATE TABLE之前放置DROP TABLE時,它說'沒有這樣的表或對象'。肯定會有創建/刪除臨時表的情況。 – Rob 2011-03-17 16:26:54
你在相同的連接或不同的連接中運行兩次嗎? – mirtheil 2011-03-17 16:38:48
我從Pervasive Control Center運行它。我在另一個窗口中加載一個SQL文檔並鍵入exec ProcName(var1,var2)。順便說一句,我正在與DEMODATA表並獲得相同的確切問題。 – Rob 2011-03-17 16:45:53