谁能帮我介绍下这个存储过程里的引号

xuyuchends 2011-03-15 10:27:48

set @sql=' update CMP_Companies set companyName='''+@companyName
+''',companyDesc='''+@companyDesc
+''',companyAddress1='''+@companyAddress1
+''',companyAddress2='''+@companyAddress2
+''',companyCity='''+@companyCity
+''',companyZip='''+@companyZip
+''',companyPhone='''+@companyPhone
+''',LayoutCSS_body='''+@LayoutCSS_body+''''
if (@LayoutCSS_headerB is not null)
set @sql=@sql+ ', LayoutCSS_headerB='''+@LayoutCSS_headerB+''''
if (@LayoutCSS_headerB2 is not null)

set @sql=@sql+' where companyID='+ltrim(@companyID)
execute (@sql)

我知道这样是可行的,但是不太明白参数间的单引号的用法。比如说为什么companyName=右边是加三个单引号。@LayoutCSS_body+''''后面为什么是4个单引号,我写两个就不行。这是为什么来
...全文
97 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
AcHerat 元老 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cutebear2008 的回复:]

我不知道能不能这么理解:
SQL code

''''
--最外面的2个引号用来说明里面的是字符串,里面的2个引号代表一个单引号(其中一个做转义符)
--相当于Java里面的\'吧
[/Quote]

可以!
cutebear2008 2011-03-15
  • 打赏
  • 举报
回复
我不知道能不能这么理解:

''''
--最外面的2个引号用来说明里面的是字符串,里面的2个引号代表一个单引号(其中一个做转义符)
--相当于Java里面的\'吧
AcHerat 元老 2011-03-15
  • 打赏
  • 举报
回复
因为你所更新表的字段 companyName 及下边的所有都是字符型的,赋值的时候也是字符型的,形如 companyName = 'aa' 这样的,定义的变量是字符型,如果添加到动态SQL语句里, companyName = 'aa' 这里 aa 前后两个引号也要加进去,所以会产生 companyName = ''' + @companyName + ''' 这样的表达式!
xuyuchends 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acherat 的回复:]
SQL code
declare @sql varchar(max)
set @sql = ''''''
print @sql
set @sql = ''''
print @sql
set @sql = ''
print @sql
/*结果:

'' --双引
' --单引
--空
[/Quote]
谁能从语法上帮我解释一下原理呢,我也知道print出来是这样的,就是搞不明白。
cutebear2008 2011-03-15
  • 打赏
  • 举报
回复

DECLARE @s VARCHAR(10)
SELECT @s='dssdsd'
PRINT '12'+@s+'12'
/*
12dssdsd12
*/

用一个引号就可以了啊!
AcHerat 元老 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cutebear2008 的回复:]

编译了一下都是错误:
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@companyName".
Msg 137, Level 15, State 2, Line 9
Must declare the scalar variable "@LayoutCSS_headerB".
Msg 137, ……
[/Quote]

因为你没有定义那些变量,同时没有动态SQL里的表,打印是出不来的,楼主打印可以看看。
Spade_J 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cutebear2008 的回复:]

编译了一下都是错误:
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@companyName".
Msg 137, Level 15, State 2, Line 9
Must declare the scalar variable "@LayoutCSS_headerB".
Msg 137, ……
[/Quote]

先declare
cutebear2008 2011-03-15
  • 打赏
  • 举报
回复
不好意思,搞错了,是参数没定义!
cutebear2008 2011-03-15
  • 打赏
  • 举报
回复
编译了一下都是错误:
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@companyName".
Msg 137, Level 15, State 2, Line 9
Must declare the scalar variable "@LayoutCSS_headerB".
Msg 137, Level 15, State 2, Line 10
Must declare the scalar variable "@sql".
Msg 137, Level 15, State 2, Line 11
Must declare the scalar variable "@LayoutCSS_headerB2".
Msg 137, Level 15, State 2, Line 13
Must declare the scalar variable "@sql".
Msg 137, Level 15, State 2, Line 14
Must declare the scalar variable "@sql".
AcHerat 元老 2011-03-15
  • 打赏
  • 举报
回复

declare @sql varchar(max)

set @sql = ''''''
print @sql

set @sql = ''''
print @sql

set @sql = ''
print @sql


/*结果:

'' --双引
' --单引
--空
AcHerat 元老 2011-03-15
  • 打赏
  • 举报
回复
你把这段SQL打印出来就知道了, PRINT!
lds1ove 2011-03-15
  • 打赏
  • 举报
回复
select ''''
xuyuchends 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ali99top 的回复:]

看下这个:http://www.huanle.us/club/?fromuid=638841
和这个:http://www.512au.info/index.php?160839-1.html
[/Quote]
看你妹啊,好歹你也赚点分数,再来骗人啊。
--小F-- 2011-03-15
  • 打赏
  • 举报
回复
在存储过程中用到引号需要转义

一个引号需要 '''

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧