加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

sql 存储过程中参数在in中的字符串

(2013-05-02 19:56:32)
标签:

sql存储过程

in参数

带引号参数

单引号参数

sp_executesql

分类: 数据库
一、使用   sp_executesql   系统存储过程执行   Unicode   字符串
1、直接组合   SQL   语句执行
CREATE   PROCEDURE   p_Test1
@TableName   varchar(20)
AS
declare   @SQLString   nvarchar(200)
set   @SQLString   =   N 'select   *   from   '   +   @TableName
EXECUTE   sp_executesql   @SQLString
2、SQL   语句里包含嵌入参数
CREATE   PROCEDURE   p_Test2
@TableName   varchar(20),
@UserID   int,
@UserName   varchar(50)
AS
declare   @SQLString   nvarchar(200)

set   @SQLString   =   N 'select   *   from   '   +
@TableName   +
N '   where   UserID=@UserID   or   UserName=@UserName '

EXECUTE   sp_executesql   @SQLString,
N '@UserID   int,   @UserName   varchar(50) ',
@UserID,   @UserName

这也是   Microsoft   SQL   Server   的推荐做法。

二、使用EXECUTE语句执行字符串
CREATE   PROCEDURE   p_Test3
@TableName   varchar(20)
AS
declare   @SQLString   nvarchar(200)
set   @SQLString   =   N 'select   *   from   '   +   @TableName
EXEC(@SQLString)
另外在这个使用中如果你传入的参数是带有 日期的或者说 需要参数本身就带有 单引号的,比如'2013-02-01 00:00:00' 这个在字符串中本身就需要带着单引号,那么记住这个就OK了:如果是字符串拼接的话,那么在在字符串中三个'表示实际的一个',四个'表示一个紧连的'也就是一个空字符的表达''.
如果程序中有过多的字符型变量拼接的话,那么建议使用系统存储过程sp_executesql,使用这个系统存储过程可以避免由于拼接字符串时不小心出现的单引号引发的错误.

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有