SQL存储过程,不可以用双引号轮换单引号么
SQL存储过程,不可以用双引号替换单引号么?execute (Declare curCol Cursor for select distinct +@showC
SQL存储过程,不可以用双引号替换单引号么?
execute ('Declare curCol Cursor for select distinct '+@showCol+' from '+@tableName+' for read only') -
//在存储中,定义存储的那里.怎么发现用双引号替换的话,颜色都不变.但是用单引号的话,三色就变了...是不是双引号只适用于 C#代码,或称后台代码...
[解决办法]sql中双引号代表列名
[解决办法]嘎嘎偶也遇到过这种问题 表示没有办法
如果你的存储过程的sql语句是动态的话
偶只能说 实在不好意思啦
[解决办法]exec @sql 是执行存储过程了
exec (@sql) 是执行sql语句
[解决办法]
execute @SQL改成execute (@SQL)
擦...你好厉害...
对了...和我解释一下这里:
when '''+@proColumn+''' then '+@staticCol+' else null
是什么意思么....
麻烦了...今天就你说对了..
这里我知道 单引号'可以转义 所以,两个单引号 ''表示一个单引号.但是这里有三个单引号,怎么像拼接又不拼接.
还有问你,execute @SQL改成execute (@SQL)
怎么一定要加括号?
你复制的那一行换行了,when前面还有一个单引号呢。
' when '''+@proColumn+''' then '+@staticCol+' else null End) as ['+@proColumn+']'
其实就是字符串常量加变量.
你其实想拼成的sql语句是 when '电风扇' then fieldName else null end) as [电风扇]
用字符串表示就需要转义字符串内部的单引号
'when ''电风扇'' then fieldName else null end) as [电风扇]'
电风扇和fieldName是变量传入进来的,所以这个字符串要拆分成几段:
1、'when ''' ,后面的三个单引号的前两个其实是一个单引号的转义表示。
2、电风扇,@proColumn传入
3、...
拼接时就是 'when ''' + @proColumn
[解决办法]
现在错误是在execute跟一行,跟引号啥的还八竿子打不着呢
先帮我解释吧...请问,你说可以去掉外围的单引号么?如果可以的话,可以减少麻烦...
但是我发现,如果直接去掉外围的单引号,我调用的 @groupCol 都说未声明...
不是去掉整个sql字符串外围的单引号。是去掉列名两端的引号,这样在sql或c#里拼接字符串的时候就不用转义了,少了好多引号,不容易出错。当然用上[]更清晰。
我的想法是说可以不,因为我见书上的静态的游标,都是两头都没有引号的,如:
Declare cur Cursor for select * from Production.Table
Open cur
Fetch Next cur from cur
所以我说是不是其实解析到引擎的时候,内部自动处理...
静态的当然不用加了,但是你的表名都是传入的,所以要先拼接字符串。
另外,你这个好像也没必要用游标吧