在 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 为其它名字即可解决问题;
所以得到的结论:
在某过程调用另一过程时,切记两过程不要存在同名临时表名,否则就会出现类似的问题;