自学内容网 自学内容网

ADOQuery 查询MSSQL存储过程一个莫名其妙的错误;

在 SSMS 中执行完成正常的的存储过程。

也能正常的返回想要的数据,,然后通过 ADO 查询时,总是提法 某 字段不存在的问题;

此问题困扰了一天。

例如(当然,实际数据结构比下面举例的复杂):

存储过程A:

PROCEDURE  AA

AS BEGIN

        CREATE TABLE #T01(ID INT,NAME VARCHAR(10))

        INSERT INTO #T01 SELECT ID,NAME FROM USERTABLE

        SELECT * FROM #T01

END 

存储过程B:

PROCEDURE  BB

AS BEGIN

        CREATE 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 #T01

        SELECT USER_ID=ID,USER_NAME=NAME, FUN_CODE ='' FROM #TAA

END 

----

在 SSMS 中,执行 BB 存储过程,能够正常的得到想要的数据。

但是在 ADOQUERY 中使用 SQL语句执行 BB 时,总是提示字段“NAME“不存在

后面才发现。由于 BB过程 中调整的 AA过程 它都有 #T01 这个临时表。

这个才是造成问题的根本存在。

只需要修改其中一个过程的 #T01 为其它名字即可解决问题;

所以得到的结论:

在某过程调用另一过程时,切记两过程不要存在同名临时表名,否则就会出现类似的问题;


原文地址:https://blog.csdn.net/aroc_lo/article/details/140306968

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!