ALTER PROCEDURE pysdwa_SubjChkItem
@CheckType varchar(40),
@SqlWhere varchar(800)declare @sqltempinsert varchar(400)
declare @sqlfromwhereone varchar(400)
declare @sqlfromwheretwo varchar(400)if exists (select * from sysobjects where id = object_id(N'ChkItemTemp')
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table ChkItemTempCREATE TABLE ChkItemTemp
(
checkitem [varchar] (42) COLLATE Chinese_PRC_CI_AS NULL ,
checkitemname [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
)set @sqlfromwhereone=' from busicheckledger a,pubaccchecktype
b,pubchecktype c,pubcheckitems d'+
' where (a.copyid=b.copyid) and (a.copyyear=b.copyyear) and
(a.accid=b.accid)'+
' and (a.copyid=c.copyid) and (a.copyyear=c.copyyear) and
(b.checktype=c.checktype)'
set @sqlfromwheretwo=' and (a.copyid=d.copyid) and
(a.copyyear=d.copyyear) and (c.checktype=d.checktype)'+
' and (a.'+@CheckType+'=d.checkitem) and
(c.checktype='''+@CheckType+''''+') '
set @sqltempinsert='insert into ChkItemTemp(checkitem,checkitemname)'+
' select distinct d.checkitem,d.checkitemname'
exec(@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere)=====================================================================调试上述存储过程时,发现varchar型变量最大程度只能定义到361,
实际赋值长度超出则截断(本例中定义为400)
但最后
exec(@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere)
还是无法正确执行,
直接将@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere
的值在SQL Explore中则可以正确执行
怀疑还是被截断
那么有谁知道exec()中的变量长度最多可以为多少?
或有其他解决方法?^_^
多谢各位,一定给分!
@CheckType varchar(40),
@SqlWhere varchar(800)declare @sqltempinsert varchar(400)
declare @sqlfromwhereone varchar(400)
declare @sqlfromwheretwo varchar(400)if exists (select * from sysobjects where id = object_id(N'ChkItemTemp')
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table ChkItemTempCREATE TABLE ChkItemTemp
(
checkitem [varchar] (42) COLLATE Chinese_PRC_CI_AS NULL ,
checkitemname [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
)set @sqlfromwhereone=' from busicheckledger a,pubaccchecktype
b,pubchecktype c,pubcheckitems d'+
' where (a.copyid=b.copyid) and (a.copyyear=b.copyyear) and
(a.accid=b.accid)'+
' and (a.copyid=c.copyid) and (a.copyyear=c.copyyear) and
(b.checktype=c.checktype)'
set @sqlfromwheretwo=' and (a.copyid=d.copyid) and
(a.copyyear=d.copyyear) and (c.checktype=d.checktype)'+
' and (a.'+@CheckType+'=d.checkitem) and
(c.checktype='''+@CheckType+''''+') '
set @sqltempinsert='insert into ChkItemTemp(checkitem,checkitemname)'+
' select distinct d.checkitem,d.checkitemname'
exec(@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere)=====================================================================调试上述存储过程时,发现varchar型变量最大程度只能定义到361,
实际赋值长度超出则截断(本例中定义为400)
但最后
exec(@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere)
还是无法正确执行,
直接将@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere
的值在SQL Explore中则可以正确执行
怀疑还是被截断
那么有谁知道exec()中的变量长度最多可以为多少?
或有其他解决方法?^_^
多谢各位,一定给分!
解决方案 »
- 如何设置Delphi编辑器当前一行的背景色?
- 百度HI邀请码发放!
- 刚学。帮帮忙。我想在zcm(表)里插入一条记录。原来用的是query。但报错。我改为adoquery也不行。看看
- 请教c++格式的函数接口如何翻译到delphi
- 变量使用问题
- MDI子窗体的显示问题?在线等待、、、
- 我用UDP控件做局域网的通信,当我在一端指定了目标IP但如果目标IP的通信程序没有启动时,发送端发送完后就自己关闭程序了.
- 在程序中,如何自动辨别当前是win98还是win2000,而加载SVRAPI.DLL或NETAPI32.DLL
- BDE 竟然不是免费发放的!
- 各位大虾帮个忙!!
- DELPHI程序的入口在什么地方,怎么看啊?
- 诚聘DELPHI数据库编程老师!
试试
^_^,问题已经解决,
是输入变量@SqlWhere varchar(800)的问题,
在Delphi 中将其赋值为
'XXXXX'
到SQL Server中,自动转化为
''XXXXX''
出的问题接分的请进~