sql查询语句太长,超过128 20
数据库是sql2000,用vb编的时候,我有一个查询语句太长,报错时提示“开头的标识符太长,最大长度为128”,这个问题怎么解决啊这是我调用储存过程的代码CREATEPR...
数据库是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 结算日期>'" & @Combo2Text & "'union select * from dbo.收款补 where 结算日期>='" & @Combo1Text & "'and 结算日期<='" & @Combo2Text & "'and (核销日期>'" & @Combo2Text & "' or 核销日期='空')
GO 展开
这是我调用储存过程的代码
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 结算日期>'" & @Combo2Text & "'union select * from dbo.收款补 where 结算日期>='" & @Combo1Text & "'and 结算日期<='" & @Combo2Text & "'and (核销日期>'" & @Combo2Text & "' or 核销日期='空')
GO 展开
5个回答
展开全部
存储过程处理吧。
存储过程的优点:
因为存储过程是T-sql语句的批处理,再加上存储过程是预编译的,再次执行此存储过程的时候就不需要编译了,速度方面也大大的提升了.
直接用一条查询语句的话那每次执行的话,都需要编译一次,并且加大了网络流量,还有一点,就是查询条件变了还需改动VB源代码,还不如存储过程直接修改SQL语句就OK了。
还有一个就是解决了编程软件的字符长度的限制。
实现代码:
create proc procname
as
begin
select (你需要的查询语句)
end
VB源的执行: exec procname
存储过程的优点:
因为存储过程是T-sql语句的批处理,再加上存储过程是预编译的,再次执行此存储过程的时候就不需要编译了,速度方面也大大的提升了.
直接用一条查询语句的话那每次执行的话,都需要编译一次,并且加大了网络流量,还有一点,就是查询条件变了还需改动VB源代码,还不如存储过程直接修改SQL语句就OK了。
还有一个就是解决了编程软件的字符长度的限制。
实现代码:
create proc procname
as
begin
select (你需要的查询语句)
end
VB源的执行: exec procname
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你最好是简化一下你的SQL,表名过长的话用别名代替。优化一下你的SQL。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
存储过程
_______
1,存储过程里声明的变量不需要 单引号双引号
2,你的连接的那两个表完全可以分开写,声明一个临时表之类的
3,你不用单一的用and。。and。。之类的,可以用一些嵌套或者其他语法
_______
1,存储过程里声明的变量不需要 单引号双引号
2,你的连接的那两个表完全可以分开写,声明一个临时表之类的
3,你不用单一的用and。。and。。之类的,可以用一些嵌套或者其他语法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用变量代替重复比较多的语句
比如
@selectstr = 'select * from'
比如
@selectstr = 'select * from'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在SQL Server里面编SQL,用VB调用,速度也快不少!
查询、命令什么的你应该接触过吧?
查询、命令什么的你应该接触过吧?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询