关于存储过程的引号,头晕了

来源:百度知道 编辑:UC知道 时间:2024/06/09 07:09:52
比如有个参数@N ,要拼语句

有的时候是'+@N+'
而有的时候又是'''+@N+'''
具体的用法是怎么样的?还有别的什么用法么?
是3引号 不是双引号

这个引号 主要是看你的参数具体的值
你上面所举的例子,在我看来可能是你理解错了,注意你的引号到底是加上什么位置

你这里的语句补全后,大致应该是这样的:
'xxxxx' + @N + 'zzzzz'
假设@N = 'yyyyy' 时,拼接后就是 xxxxxyyyyyzzzzz
3引号的情况:
'''xxxxx''' + @N + '''zzzzz'''
仍然让@N = 'yyyyy',拼接后就是 'xxxxx'yyyyy'zzzzz'

1个引号时,就是表示所辖内容为字符串
3个引号时,第一个表示字符串前引号,第二个是转义字符,第三个表示引号(字符内容)

这个问题我以前也困惑过,看这个例子
declare @sql varchar(4000)
set @sql = 'select Name'
select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from CJ) as a
select @sql = @sql+' from CJ group by name'
exec(@sql)
整个存储过程里用来包含着字符串的就是单引号,
你看像set @sql = 'select Name'
三个单引号的前两个''表示转译,因为在sql中,单引号是用来包着字符串的,
但如果我本身就想要这个单引号作为字段的值,那么就需要用两个单引号来声明,
比如上面的语句,如果Subject变量的值为ajax,那么这句话的意思是只有当Subje