SQL语句过长,无法执行,怎么办? 如果你用varchar\char型的变量,由于只能到8000字符,所以就会被截断,sql语句不会那么小的,只是字符串被截断了,不过我估计没那么长的吧,估计你语句里有换行,这样就有可能空行也被算进去了,你可以print一下,去除空行和回车,应该可以 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 varchar\char最长8000nvarchar最长4000你的sql语句太长拉,是不是有换行,是不是有太多空格,你先简化一下实在不行,可以把语句分开写EXEC(@SQL1+@SQL2+@SQL3) 可以把sql语句换行用加号连接,delphi里面也规定了一行的长度,可以用换行的方法解决 ss := 'select b.nva_prod_num int_exmi_prid,a.nva_exmi_prna,a.nva_exmi_prsp,a.int_exmi_how, ' + 'c.nva_meas_enam sUnit,d.nva_mone_enam sMoneyKind,a.mon_exmi_unit,a.mon_exmi_orig, ' + 'a.mon_exmi_rmb,a.mon_exmi_tota,a.nte_exmi_rame from t_export_minu a ' + 'left join t_product_info b on a.int_exmi_prid = b.int_prod_id and b.bit_prod_stat = 1 ' + 'left join t_meas_unit c on a.int_exmi_mein = c.int_meas_id and c.bit_meas_stat = 1 ' + 'left join t_money_info d on a.int_exmi_moid = d.int_mome_id and d.bit_mone_stat = 1 ' + 'where a.bit_exmi_stat = 1 and int_exmi_exid ='+ '''' + strcompact + '''' ; Cds_mx.Active := false ; Cds_mx.CommandText := ss ; Cds_mx.Active := true ; 过长的语句可以寸到一张临时表中,再与原来的表进行inner join 只要沒有太多空行,你的語句應該不會超過長度限制的我曾見過一万多行的sql server語句執行沒問題 我曾見過一万多行的sql server語句執行沒問題--------如果楼主将他们存到@sql变量里面就存不下了,有8000的限制。 十万条数据,求按条件SQL分类汇总。 数据库 日志回复,在线等 两个表之间的数据合并,不用游标能搞定么? 刚接触 DTS ,请问这个关于DTS 带参数的 如何设计?!!在线等待! 当用户一登陆sqlserver时,怎样自动执行一个存储过程? 修改字段的标识出错问题 100分求助 请教有关数据库存储过程的问题 请教多用户访问数据性能下降问题??? 创建一个统计数目的触发器 =触发器语法问题? 百思不得其解的怪问题!!
nvarchar最长4000
你的sql语句太长拉,是不是有换行,是不是有太多空格,你先简化一下实在不行,可以
把语句分开写EXEC(@SQL1+@SQL2+@SQL3)
ss := 'select b.nva_prod_num int_exmi_prid,a.nva_exmi_prna,a.nva_exmi_prsp,a.int_exmi_how, '
+ 'c.nva_meas_enam sUnit,d.nva_mone_enam sMoneyKind,a.mon_exmi_unit,a.mon_exmi_orig, '
+ 'a.mon_exmi_rmb,a.mon_exmi_tota,a.nte_exmi_rame from t_export_minu a '
+ 'left join t_product_info b on a.int_exmi_prid = b.int_prod_id and b.bit_prod_stat = 1 '
+ 'left join t_meas_unit c on a.int_exmi_mein = c.int_meas_id and c.bit_meas_stat = 1 '
+ 'left join t_money_info d on a.int_exmi_moid = d.int_mome_id and d.bit_mone_stat = 1 '
+ 'where a.bit_exmi_stat = 1 and int_exmi_exid ='+ '''' + strcompact + '''' ;
Cds_mx.Active := false ;
Cds_mx.CommandText := ss ;
Cds_mx.Active := true ;
我曾見過一万多行的sql server語句執行沒問題
--------
如果楼主将他们存到@sql变量里面就存不下了,有8000的限制。