动态参数的传入

cherish_55 2011-05-18 04:56:11
@SQL = @SQL+' AND '+@ITEM2+'='''+@IN_ITEM2+''''
''+@IN_ITEM2+'''',这里为什么前面是两个单引号,后面是四个单引号。

...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-05-18
  • 打赏
  • 举报
回复
--动态语句语法
/******************************************************************************************************************************************************
动态语句语法:exec\sp_executesql语法

整理人:中国风(Roy)

日期:2008.06.06
******************************************************************************************************************************************************/
--动态语句语法:

--方法1查询表改为动态
select * from sysobjects
exec('select ID,Name from sysobjects')
exec sp_executesql N'select ID,Name from sysobjects'--多了一个N为unicode

--方法2:字段名,表名,数据库名之类作为变量时,用动态SQL
declare @FName varchar(20)
set @FName='ID'
exec('select '+@FName+' from sysobjects where '+@FName+'=5' )


declare @s varchar(1000)
set @s=N'select '+@FName+' from sysobjects where '+@FName+'=5'
exec sp_executesql @s--会报错


declare @s nvarchar(1000)--改为nvarchar
set @s=N'select '+@FName+' from sysobjects where '+@FName+'=5'
exec sp_executesql @s--成功


--方法3:输入参数

declare @i int,@s nvarchar(1000)
set @i=5
exec('select ID,Name from sysobjects where ID='+@i)

set @s='select ID,Name from sysobjects where ID=@i'
exec sp_executesql @s,N'@i int',@i--此处输入参数要加上N

--方法4:输出参数

declare @i int,@s nvarchar(1000)
set @s='select @i=count(1) from sysobjects'

--用exec
exec('declare @i int '+@s+' select @i')--把整个语句用字符串加起来执行

--用sp_executesql
exec sp_executesql @s,N'@i int output',@i output--此处输出参数要加上N
select @i


--方法5:输入输出

--用sp_executesql
declare @i int,@con int,@s nvarchar(1000)
set @i=5
select @s='select @con=count(1) from sysobjects where ID>@i'
exec sp_executesql @s,N'@con int output,@i int',@con output ,@i
select @con

--用exec
declare @i int,@s nvarchar(1000)
set @i=5
select @s='declare @con int select @con=count(1) from sysobjects where ID>'+rtrim(@i)+' select @con'
exec(@s)



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/04/25/4106390.aspx
打一壶酱油 2011-05-18
  • 打赏
  • 举报
回复
转义字符 ,两个' 例如 '' 表示 一个 '
yibey 2011-05-18
  • 打赏
  • 举报
回复
declare @str varchar(20)
declare @sql varchar(max)
set @str = 'abdc'

set @sql = 'select * from ta where col1 = '''+@str +'''' ----这里最后不要接成 select * from ta where col1 ---= 'abcd', 那么你在拼接的时候本身是字符串,那么上述第一个‘ 代表字符串开始,接着''' 第一个引号代表字符串转义符,也就是跟着它后面的是一个字符并不是SQL认识的关键字,所以第二个引号在组合好的时候会被打印出来,最后一个就是字符串结束符。''''这个同样代表第一个字符开始第二个字符转义符第三个是字符最后一个字符结束符
AcHerat 元老 2011-05-18
  • 打赏
  • 举报
回复
楼主自己打印一下这个@SQL就知道了。。。
Oraclers 2011-05-18
  • 打赏
  • 举报
回复
在字符中如果要用到單引號,則須加一個單引號。後面四個單引號,是要表示一個單引號的字符串。

34,590

社区成员

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

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