sql查询语句太长,超过128

来源:百度知道 编辑:UC知道 时间:2024/05/09 02:14:27
数据库是sql2000,用vb编的时候,我有一个查询语句太长,报错时提示“开头的标识符太长,最大长度为128”,这个问题怎么解决啊
这是我调用储存过程的代码

CREATE PROCEDURE [dbo].[1] @Combo1Text nvarchar, @Combo2Text nvarchar
AS select * from dbo.收款前 where 核销日期>='" & @Combo1Text & "'and 核销日期<='" & @Combo2Text & "'and 核销日期<>'空'and 结算日期<'" & @Combo1Text & "'union select * from dbo.收款 where 结算日期>='" & @Combo1Text & "'and 结算日期<='" & @Combo2Text & "'and 核销日期>='" & @Combo1Text & "'and 核销日期<='" & @Combo2Text & "'and 核销日期<>'空'union select * from dbo.收款补 where 结算日期>='" & @Combo1Text & "'and 结算日期<='" & @Combo2Text & "'and 核销日期<'" & @Combo1Text & "'union select * from dbo.收款前 where 核销日期>='" & @Combo1Text & "'and 核销日期<='" & @Combo2Text & "'and 结算日期>'" & @Combo2Te

在SQL Server里面编SQL,用VB调用,速度也快不少!
查询、命令什么的你应该接触过吧?

存储过程
_______
1,存储过程里声明的变量不需要 单引号双引号
2,你的连接的那两个表完全可以分开写,声明一个临时表之类的
3,你不用单一的用and。。and。。之类的,可以用一些嵌套或者其他语法

存储过程处理吧。
存储过程的优点:
因为存储过程是T-sql语句的批处理,再加上存储过程是预编译的,再次执行此存储过程的时候就不需要编译了,速度方面也大大的提升了.

直接用一条查询语句的话那每次执行的话,都需要编译一次,并且加大了网络流量,还有一点,就是查询条件变了还需改动VB源代码,还不如存储过程直接修改SQL语句就OK了。

还有一个就是解决了编程软件的字符长度的限制。
实现代码:
create proc procname
as
begin
select (你需要的查询语句)
end

VB源的执行: exec procname

你最好是简化一下你的SQL,表名过长的话用别名代替。优化一下你的SQL。

用变量代替重复比较多的语句
比如
@selectstr = 'select * from'