左岸流沙 发表于 2016-06-15 11:21

诡异的proc程序,麻烦高手帮忙看看

程序片段如下:
1 int ttGgpt_batch_log_Countcardid( )
2 {
3         EXEC SQL BEGIN DECLARE SECTION;
4          char batchdate;
5         EXEC SQL END DECLARE SECTION;
6
7         sqlca.sqlcode=111;
8         memset(batchdate,0x00,sizeof(batchdate));
9         printf("begin\n");
10
11         EXEC SQL SELECT abc INTO :batchdateFROM dual12345;
12         printf("11sqlcode=[%d],batchdate=[%s]\n",sqlca.sqlcode,batchdate);
13
14         EXEC SQL SELECT abc INTO :batchdateFROM dual12345;
15         printf("12sqlcode=[%d],batchdate=[%s]\n",sqlca.sqlcode,batchdate);
16
17         printf("end\n");
18
19         return 0;
20 }
可执行程序结果如下
begin
11sqlcode=,batchdate=
12sqlcode=[-942],batchdate=
end

疑问的是:第11行和第14行一模一样,为啥第一次执行sqlcode=0(不正常结果),第二次sqlcode=-942(正常结果),输出的1234567 是上一个程序段输出的结果。

PS:编译环境 LinuxRed HatEnterprise Linux Server release 5.8 (Tikanga)
      数据库 ORACLERelease 11.2.0.1.0

左岸流沙 发表于 2016-06-15 13:54

有人看吗,别下沉没了啊,.....

yulihua49 发表于 2016-06-16 10:24

左岸流沙 发表于 2016-06-15 11:21 static/image/common/back.gif
程序片段如下:
1 int ttGgpt_batch_log_Countcardid( )
2 {

第一个正常。第二个异常。因为你没清除第一个的值。

左岸流沙 发表于 2016-06-16 11:04

第一个不正常啊,这个表 dual12345根本不存在啊,所以他的sqlcode不应该为0

左岸流沙 发表于 2016-06-17 09:25

有人再,帮忙看看么,
页: [1]
查看完整版本: 诡异的proc程序,麻烦高手帮忙看看