PB 9 动态SQL sql字符串长度限制请教
给我大侠帮帮忙 我现在用PB 9使用动态SQL 组装的SQL执行字符串很长大概有1000多字符,该组装的SQL字符串直接在plsql中执行没有问题,通过PB动态SQL执行报无效的操作符,应该是字符串长的问题影响的,但是不知道有什么方法解决,希望大家帮帮忙。大致代码如下:
string ls_sql
long ll_row
string ERRORS, sql_syntax
string presentation_str, dwsyntax_str
sql= "select to_char(b.st_date,'yyyy.mm.dd') ,dept_dict.dept_name ,sum(views.BED_USED_NUM),~n "+&
"(sum(views.BED_USED_NUM) + (sum(b.ADM_OUTP_NUM)+sum(b.FROM_OTHER_DEPT_NUM)+sum(b.FROM_OTHER_HOSPITAL_NUM)) ~n"+&
"- (sum(b.DISCHARGE_NORMAL_NUM)+sum(b.TRANS_DEPT_NUM)+sum(b.TRANS_HOSPITAL_NUM)+sum(b.DIED_NUM))) jss,sum(b.BED_USED_NUM) bs ~n"+&
",sum(b.ADM_OUTP_NUM),sum(b.FROM_OTHER_DEPT_NUM),sum(b.FROM_OTHER_HOSPITAL_NUM),sum(b.DISCHARGE_NORMAL_NUM), ~n"+&
"sum(b.TRANS_DEPT_NUM),sum(b.TRANS_HOSPITAL_NUM),sum(b.DIED_NUM) ~n"+&
"from DEPT_ADT_DAY b, ~n"+&
"(select a.st_date+1 sd,a.* from DEPT_ADT_DAY a ~n"+&
"where a.st_date >= to_date('2011.11.04','yyyy.mm.dd') ) views ,dept_dict ~n"+&
"where views.sd = b.st_date ~n"+&
"and views.dept_code = b.dept_code ~n"+&
"and views.dept_code = dept_dict.dept_code ~n"+&
"and views.identity = b.identity ~n"+&
"group by to_char(b.st_date,'yyyy.mm.dd'),dept_dict.dept_name ~n"+&
"having (sum(views.BED_USED_NUM) + (sum(b.ADM_OUTP_NUM)+sum(b.FROM_OTHER_DEPT_NUM)+sum(b.FROM_OTHER_HOSPITAL_NUM)) ~n"+&
"- (sum(b.DISCHARGE_NORMAL_NUM)+sum(b.TRANS_DEPT_NUM)+sum(b.TRANS_HOSPITAL_NUM)+sum(b.DIED_NUM))) <> sum(b.BED_USED_NUM) ;"
sql_syntax = trim( sql )
if lower(left(sql_syntax,6)) <> 'select' then
messagebox("提示","本功能只接受Select形式的查询语句,请不要使用update,insert等其他SQL语句!")
return
end if
presentation_str = "style(type=grid)"
dwsyntax_str = SQLCA.SyntaxFromSQL(sql_syntax, presentation_str, ERRORS)
IF Len(ERRORS) > 0 THEN
MessageBox("提示", "创建数据窗口时出现错误: " + ERRORS)
RETURN
END IF
dw_4.Create( dwsyntax_str, ERRORS)
IF Len(ERRORS) > 0 THEN
MessageBox("提示", "创建数据窗口时出现错误: " + ERRORS)
RETURN
END IF
dw_4.settransobject( sqlca ) ;
dw_4.retrieve() ;