在?SSMS?中執行完成正常的的存儲過程。
也能正常的返回想要的數據,,然后通過 ADO?查詢時,總是提法?某?字段不存在的問題;
此問題困擾了一天。
例如(當然,實際數據結構比下面舉例的復雜):
存儲過程A:
PROCEDURE? AAAS BEGINCREATE TABLE #T01(ID INT,NAME VARCHAR(10))INSERT INTO #T01 SELECT ID,NAME FROM USERTABLESELECT * FROM #T01END?
存儲過程B:
PROCEDURE? BBAS BEGINCREATE TABLE #TAA(ID INT,NAME VARCHAR(10))CREATE TABLE #T01(USER_ID INT,USER_NAME,VARCHAR(10),FUN_CODE VARCHAR(10))INSERT INTO #TAA EXEC?AA? --調AA存儲過程,將查詢結果放入 #TAA?中INSERT INTO #T01SELECT USER_ID=ID,USER_NAME=NAME, FUN_CODE =''?FROM #TAAEND?
----
在?SSMS?中,執行?BB?存儲過程,能夠正常的得到想要的數據。
但是在 ADOQUERY?中使用?SQL語句執行 BB?時,總是提示字段“NAME“不存在。
后面才發現。由于?BB過程 中調整的?AA過程?它都有?#T01?這個臨時表。
這個才是造成問題的根本存在。
只需要修改其中一個過程的 #T01?為其它名字即可解決問題;
所以得到的結論:
在某過程調用另一過程時,切記兩過程不要存在同名臨時表名,否則就會出現類似的問題;