在单引号中怎么使用变量啊
SELECT * FROM OPENQUERY ([192.168.159.134] ,'select prjkey from project where prjname = @prjname' )
这样写报错
SELECT * FROM OPENQUERY ([192.168.***.***] ,'select prjkey from project where prjname = ''@prjname''' )
这样写就相当于字符串了
我写+号报语法错误
急救
豆有点少、不想说(ˇˍˇ) ~
简单点 先字符串拼凑,然后再放进去
@sql='select prjkey from project where prjname'+ @prjname
declare @sql varchar(50) set @sql='select prjkey from project where prjname = '+ @prjname SELECT * FROM OPENQUERY ([192.168.159.134] ,@sql )
报错
@sql附近有语法错误
@博客园乄小光: 来来来、贴个编译通过的
BEGIN
declare @sql varchar(100)
if(@city='') set @sql='select DEPT_CODE from T_USERDEPT where USER_NO='+@user+''
else set @sql='select DEPT_CODE from T_DEPT where BRANCH_CODE='+@city+''
select * from P_BUSINESS_LIST where DEPT_CODE in (@sql)
END
@博客园乄小光: 这个函数有点坑,第二个参数类型貌似限制了一般的字符串拼凑,继续拼凑,测试print出来是正确的,你试下
declare @sql varchar(100) ,@prjname varchar(100) set @prjname='xxxx' set @sql='SELECT * FROM '+ 'OPENQUERY'+'('+'[192.168.159.134]'+','+'''select prjkey from project where prjname ='+ @prjname+''''+')' print @sql Result: SELECT * FROM OPENQUERY([192.168.159.134],'select prjkey from project where prjname =xxxx')
@风醉: 但是报列名xxxx无效
@博客园乄小光: 不会吧,我那个表名写错了(是你的表名,我这里面用的是 project),你改下,我exec 这个@sql 是提示服务器不对,这个代表这段语句是对的啊
@风醉: 我的表名就是这个,你服务器对了才会报这个错,我试试用同义词
我就奇怪了,你们为什么喜欢最后加个空字符串,难道仅仅就是对称美?
set @sql='select prjkey from project where prjname = '+ @prjname+'' 为什么不写成 set @sql='select prjkey from project where prjname = '+ @prjname
set @sql='SELECT * FROM '+ 'OPENQUERY'+'('+'[192.168.159.134]'+','+'''select prjkey from project where prjname ='+ @prjname+''''+')' 为什么不写成 set @sql='SELECT * FROM '+ 'OPENQUERY'+'('+'[192.168.159.134]'+','+'select prjkey from project where prjname ='+ @prjname+')'
java是这么写的
SQL 里面 ' ' 里面要 再有个 ' 用 ''' ,例如单个执行出来是:
SELECT * FROM OPENQUERY([192.168.159.134],select prjkey from project where prjname =xxxx)
而我们需要得到的是
SELECT * FROM OPENQUERY([192.168.159.134],'select prjkey from project where prjname =xxxx')
要回答你这问题,首先看一下这个微软官方链接
很明显你这儿的prjname字段是字符型的,你应该参考的是这段代码
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
想想看这段代码和你写的
@sql='select prjkey from project where prjname = '+ @prjname
有啥不同,使劲想,想不出来就去跑步1000米。
外面下雨。。。在openquery方法的sql语句中使用不了变量么,你的那个例子的sql是字符型的,我的变量也是字符型的,我知道那个例子写的是对的,但是我要把那个NewTitle变成变量。。。
@博客园乄小光: 这就是我要你想得啊,
你看看怎样写,假设你那个变量是NewTitle,怎样修改你的SQL语句才能变成示例中的SQL语句,一模一样。
@爱编程的大叔: 我试过很多种了,一模一样的时候就把变量当初字符串了。。