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