问题1:
有表 areatab 如下
id parentid areaname areanum
18 0 县 001000000
19 18 县城 001001000
21 18 马武 001002000
22 18 下路 001003000
23 18 鱼池 001004000
在 pb中写如下语句,
int noarea = 18
int boys
SELECT count(*) INTO :boys FROM areatab WHERE parentid = :noarea ;
得到的boys 是0,sqlcode 是 -1,不知道错在那里。
在 数据库的查询分析器中运行
SELECT count(*) FROM areatab WHERE parentid = 18 ;
能得到正确的结果。
问题2:
语句 update Tempfld set dsp = :display where fldname = :fdname ; 执行不成功,
上下文如下:
// 从配置文件中读取字段显示状态,1、显示,0、不显示
DECLARE curfdname CURSOR FOR
SELECT fldname
FROM Tempfld ;
string fdname
int display
open curfdname ;
FETCH curfdname INTO :fdname;
DO WHILE sqlca.sqlcode = 0
display = profileint(gs_inifn,"dspfield" ,w_ty.curtabname+"."+fdname ,1 )
update Tempfld set dsp = :display where fldname = :fdname
;
if sqlca.sqlcode =0 then
messageBox("failed.",fdname);
end if
if 1 = display then
lb_1.additem(fdname)
else
lb_2.additem( fdname)
end if
FETCH curfdname INTO :fdname;
LOOP
CLOSE curfdname;
换成如下语句,还是不行。
// mysql = "update tempfld set dsp= "+string(display)+" where fldname='"+fdname+“‘”
// EXECUTE IMMEDIATE :Mysql ;
思考中,寻求解决
.................以下是10月16日晚 追加.........................
经过一下午的煎熬,反复查看了sql 帮助和进行程序调试,终于发现 了一个问题的原因。
select into 和 select 是不同的语句,select into 必须接一个表名,犯了一个低级的错误,在此给自己和网友提个醒,以免走了弯路。
转载于:https://blog.51cto.com/true2love/406498