首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个无厘头的SQL出错解决方案

2012-01-23 
一个无厘头的SQL出错declare @maxTime varchar(25)select @maxTime+max(CONTACTENDTIME)+ from T

一个无厘头的SQL出错
declare @maxTime varchar(25)
select @maxTime=''''+max(CONTACTENDTIME)+'''' from T_Pub_CommonInfo

SELECT * FROM openquery(ORA8172,'SELECT * FROM ICDMAIN.T_PUB_COMMONINFO WHERE CONTACTENDTIME>'+@maxTime+' AND STAFFCITY =''05'' AND ACCEPTERNO IN (''4085'',''4086'',''4087'',''4088'',''4089'',''4090'',''4096'')')

服务器: 消息 170,级别 15,状态 1,行 9
第 9 行: '+' 附近有语法错误。


各路高手,请帮忙解决一下,语法哪里错了,谢谢。

[解决办法]
declare @str varchar(2000)

set @str='SELECT * FROM ICDMAIN.T_PUB_COMMONINFO WHERE CONTACTENDTIME>'+@maxTime+' AND STAFFCITY =''05'' AND ACCEPTERNO IN (''4085'',''4086'',''4087'',''4088'',''4089'',''4090'',''4096'')'

SELECT * FROM openquery(ORA8172,@str)
[解决办法]
openquery 带参数 。。。 还是直接拼字符串吧!
[解决办法]
字符串左右需要单引号
[解决办法]
OPENQUERY ( linked_server ,'query' )
 

参数
linked_server 
表示链接服务器名称的标识符。

' query ' 
在链接服务器中执行的查询字符串。该字符串的最大长度为 8 KB。


OPENQUERY 不接受其参数的变量
[解决办法]
declare @maxTime varchar(25)
select @maxTime=trim(max(CONTACTENDTIME)) from T_Pub_CommonInfo

SELECT * FROM openquery(ORA8172,'SELECT * FROM ICDMAIN.T_PUB_COMMONINFO 
WHERE CONTACTENDTIME>'''+@maxTime+''' AND STAFFCITY =''05'' 
AND ACCEPTERNO IN (''4085'',''4086'',''4087'',''4088'',''4089'',''4090'',''4096'')')
[解决办法]

探讨
declare @maxTime varchar(25)
select @maxTime=''''+max(CONTACTENDTIME)+'''' from T_Pub_CommonInfo

SELECT * FROM openquery(ORA8172,'SELECT * FROM ICDMAIN.T_PUB_COMMONINFO WHERE CONTACTENDTIME>'+@max……

热点排行
Bad Request.