Chinaunix

标题: 关于EXEC SQL excute immediate 的问题 [打印本页]

作者: isnobles    时间: 2009-04-02 17:24
标题: 关于EXEC SQL excute immediate 的问题
EXEC SQL BEGIN DECLARE SECTION;
         char sSqlStr[1024];   /*Y830 */
         EXEC SQL END DECLARE SECTION;
         memset(sSqlStr,0x00,sizeof(sSqlStr));

         sprintf(sSqlStr,"UPDATE %s..amsd \
                          SET    AMSD_NAME_LINE_1='%s',  \
                                 AMSD_ADDR_LINE_1='%s',  \  
                                 AMSD_CITY_STATE='%s',   \  
                                 AMSD_PHONE_NBR_2='%s',  \  
                                 AMSD_STORE_PN3='%s',    \   
                                 AMSD_PSTL_CD='%s',      \   
                                 AMSD_CONTACT_1='%s',    \  
                                 AMSD_STORE_LEVEL_C2='%s', \
                                 AMSD_STORE_PHONE='%s',  \
                                 AMSD_UPD_TIME='%s'      \
                                 WHERE                   \
                                 AMSD_STORE = '%s'",     
                                 pDb,
                                 AmsdAction.Amsd_Name_Line_1,   
                                  AmsdAction.Amsd_Addr_Line_1,   
                                  AmsdAction.Amsd_City_State,     
                                  AmsdAction.Amsd_Phone_Nbr_2,   
                                  AmsdAction.Amsd_Store_Pn3,      
                                  AmsdAction.Amsd_Pstl_Cd,        
                                  AmsdAction.Amsd_Contact_1,      
                                  AmsdAction.Amsd_Store_Level_C2,
                                  AmsdAction.Amsd_Store_Phone,   
                                  AmsdAction.Action_Time ,         
                                  AmsdAction.Amsd_Store );
          PrintBATLog("SQL[%s]",sSqlStr);                  
          EXEC SQL excute immediate :sSqlStr;
------------------------------------------------------
上面是原代码
UPDATE db001..amsd
SET AMSD_NAME_LINE_1='AMSD001',
AMSD_ADDR_LINE_1='(测试修改)         ',
AMSD_CITY_STATE='太原 ',
AMSD_PHONE_NBR_2='03510000000         ',
AMSD_STORE_PN3='818888999',
AMSD_PSTL_CD='030002    ',
AMSD_CONTACT_1='李XXX                                ',
AMSD_STORE_LEVEL_C2='2',
AMSD_STORE_PHONE='03510000000         ',
AMSD_UPD_TIME='20090401105121'
WHERE AMSD_STORE = '616000050'
运行中sSqlStr实际内容是上面这个

但运行到 EXEC SQL excute immediate :sSqlStr;时报如下错误

2009-04-02 17:10:59 :sqlca.sqlcode=-102;sqlmsg=Incorrect syntax near '@sql0_sSqlStr'

请大家帮忙看看是怎么回事  再此谢过啦。

[ 本帖最后由 isnobles 于 2009-4-2 17:26 编辑 ]
作者: WFCJZ    时间: 2009-04-03 12:17
最好检查一你的语法约定
作者: chuxu    时间: 2009-04-03 14:14
PrintBATLog("SQL[%s]",sSqlStr);
这个打印出来的sSqlStr,在isql里面执行是什么情况,能成功吗?
作者: snow888    时间: 2009-04-19 22:56
同 3 楼问

建议把 PrintBATLog("SQL[%s]",sSqlStr); 输出的信息打印出来,在 isql 中执行一下看看。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2