下面有个变量ls_mymonad 含有单引号,下面 ls_sqlstring 整个报错了,下面是在SQL SERVER上执行的,请问如何处理?
ls_sqlstring="insert into mdproduct (prod_name,prod_size,monad,last_add,box_num,std_price,buy_price,limit_num,up_num,ware_no,per_memo,prod_made,prod_label,prod_pzwh,box_midnum,bar_code,prod_pym,cli_no,prod_no, md_list_no) values ('" +ls_myprod_name+"','" +ls_myprod_size + "','" +ls_mymonad+"','" +ls_mylast_add + "','" +ls_mybox_num+"',"+string(ld_std_price) +"," +string(ld_buy_price)+"," +string(ld_limit_num) +"," +string(ld_up_num) +",'" +ls_ware_no+"','" +ls_per_memo+"','" +ls_prod_made+"','" +ls_prod_label+"','" +ls_prod_pzwh+ "','" +ls_box_midnum+"','" +ls_bar_code+"','" +ls_prod_pym+"','"+ls_mycli_no+"','" +ls_myprod_no+"','" +ls_realfilename+"')"
execute immediate :ls_sqlstring;
IF sqlca.SQLcode <> 0 THEN
ROLLBACK;
MessageBox("提示","第" + string(li_row) +"行插入数据出错1")
ELSE
COMMIT;
END IF
------解决方案--------------------
ls_mymonad 内容有单引号是么?
那你把上面的字符串的单引号<-->双引号
调换一下再执行
最主要的是你要贴出你的sqlca.sqlerrtext
------解决方案--------------------
update A set name='O''neal' where.
------解决方案--------------------
处理方式太麻烦了,PB的嵌入式SQL可以直接使用变量的,不需要这样组成字符串
最好使用下面的方式,不用动态SQL方式
insert into mdproduct (prod_name,prod_size,monad,last_add,box_num,std_price,buy_price,limit_num,up_num,ware_no,per_memo,prod_made,prod_label,prod_pzwh,box_midnum,bar_code,prod_pym,cli_no,prod_no, md_list_no) values (:ls_myprod_name,:ls_myprod_size,
------解决方案--------------------
建议 研究一下,字符转义 这块,你会很有收获的