日期:2014-05-17  浏览次数:20829 次

SQL存储过程,不可以用双引号替换单引号么?
execute ('Declare curCol Cursor for select distinct '+@showCol+' from '+@tableName+' for read only') -

//在存储中,定义存储的那里.怎么发现用双引号替换的话,颜色都不变.但是用单引号的话,三色就变了...是不是双引号只适用于 C#代码,或称后台代码...

------解决方案--------------------
sql中双引号代表列名
------解决方案--------------------
嘎嘎偶也遇到过这种问题 表示没有办法
如果你的存储过程的sql语句是动态的话
偶只能说 实在不好意思啦
------解决方案--------------------
引用:
Quote: 引用:

execute @SQL改成execute (@SQL)

擦...你好厉害...
对了...和我解释一下这里:
 when '''+@proColumn+''' then '+@staticCol+' else null

是什么意思么....
麻烦了...今天就你说对了..
这里我知道 单引号'可以转义 所以,两个单引号 ''表示一个单引号.但是这里有三个单引号,怎么像拼接又不拼接.
还有问你,execute @SQL改成execute (@SQL)
怎么一定要加括号?

exec @sql  是执行存储过程了
exec (@sql) 是执行sql语句
------解决方案--------------------
引用:
Quote: 引用:

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