Sql语句用变量 用exec sp_executesql 执行之

原创 2005年02月25日 16:54:00

CREATE Procedure sp_Select_Selling_Test
@StkList_Id varchar(30),
@Bill_Sta tinyint
as
declare @StrSql nvarchar(250)
Set @StrSql=''
if  len(ltrim(rtrim(@StkList_Id)))>0
Begin
Set @StrSql=@StrSql + ' And StkList_Id Like''%' + @StkList_Id +'%'''
end

if  @Bill_Sta>0
Begin
Set  @StrSql=@StrSql + ' And Bill_Sta='  + rtrim(ltrim(str(@Bill_Sta) ))

end
Set  @StrSql='Select * From Stocks_Sell_Data Where StkList_Id<>''''' + @StrSql
exec sp_executesql  @StrSql
GO

//
调用
exec sp_Select_Selling_Test '050128XS-003',1

=======================================================================

CREATE PROCEDURE sp_Product_Search
@Product_Code nvarchar(20),
@Sale_Price real
 AS
declare @StrSql  nvarchar(200)
Set @StrSql=''


if len(ltrim(rtrim(@Product_Code)))>0
Begin
set @StrSql=@Strsql + ' and Product_Code Like "%' + ltrim(rtrim(@Product_Code)) +'%"'
end

if isnumeric(@Sale_Price)=1
Begin
set @StrSql=@Strsql + ' and Sale_Price<' + Cast(@Sale_Price as nvarchar(10))  //数字型要转为字符型
end

 Set @StrSql='Select * From Products Where (ProId<>0) ' + @StrSql
exec sp_executesql  @StrSql
GO

//调用

exec  sp_Product_Search 'l',22

===================================

//带output参数

CREATE PROCEDURE sp_Product_Search
@Product_Code nvarchar(20),
@Sale_Price real,
@aa nvarchar(200) output
 AS
declare @StrSql  nvarchar(200)
Set @StrSql=''


if len(ltrim(rtrim(@Product_Code)))>0
Begin
set @StrSql=@Strsql + ' and Product_Code Like "%' + ltrim(rtrim(@Product_Code)) +'%"'
end

if isnumeric(@Sale_Price)=1
Begin
set @StrSql=@Strsql + ' and Sale_Price<' + Cast(@Sale_Price as nvarchar(10))
end

 Set @StrSql='Select * From Products Where (ProId<>0) ' + @StrSql
set @aa = @StrSql
exec sp_executesql  @StrSql
GO

///调用

declare @aa as nvarchar(200)
exec sp_Product_Search  'l',22,@aa output
print @aa

===================================

执行动态SQL,exec和exec sp_executesql

两者都可以执行动态sql sp_executesql  可以在动态 sql 中使用变量,并且将变量输出 exec 则只能执行动态 sql 和 存储过程,也可以使用表变量,执行时需要加括号,唯一不足...
  • jc_benben
  • jc_benben
  • 2016年05月24日 17:43
  • 1927

用sp_executesql 来执行拼接的sql语句,并返回值

declare @sql nvarchar(2000) declare @cou int declare @id varchar(20) set @id='1' set @sql='selec...
  • wtnu200
  • wtnu200
  • 2013年10月16日 15:58
  • 2494

exec与 exec "sp_executesql" 的用法

动态语句语法: --方法1查询表改为动态 select * from sysobjects exec('select ID,Name from sysobjects') exec sp_execut...
  • u011955860
  • u011955860
  • 2016年07月20日 14:51
  • 2502

建议使用 sp_executesql 而不要使用 EXECUTE 语句执行字符串

使用 sp_executesql建议使用 sp_executesql 而不要使用 EXECUTE 语句执行字符串。支持参数替换不仅使 sp_executesql 比 EXECUTE 更通用,而且还使 ...
  • mlks_2008
  • mlks_2008
  • 2007年09月18日 14:23
  • 979

sqlserver sp_executesql 动态SQL字符长度超过8000

动态SQL字符长度超过8000,我记得SQL SERVER 2005中用SP_EXECUTESQL打破了这个限制。   平常用动态SQL,可能都会用EXEC(),但是有限制,就是8000字...
  • txqd1989
  • txqd1989
  • 2017年06月23日 18:00
  • 496

动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的

点击打开链接 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句,个人觉得用得比较多的地方就是分页存储过程和执行搜索查询的SQL语句。一个比较通用的分页...
  • yenange
  • yenange
  • 2012年12月21日 11:05
  • 8354

用sp_executesql执行动态SQL语句及获得返回值

过去我执行拼凑出来的动态SQL语句,do
  • leftfist
  • leftfist
  • 2014年04月28日 22:08
  • 7713

SqlServer动态执行SQL语句sp_executesql、Exec

sp_executesql语法 sp_executesql [@stmt =] stmt[    {, [@params =] N@parameter_name  data_type [,...n] ...
  • Tercel99
  • Tercel99
  • 2008年09月08日 21:34
  • 16411

Exec 执行带参数命令 sp_executesql 的使用

表test1  字段SQLCom  的一条记录是 Select * from Remark  where SystemID=@SystemID CREATE PROCEDURE   Getremak ...
  • xiaosongaspnet
  • xiaosongaspnet
  • 2006年03月23日 11:06
  • 1001

SQL2008 EXEC sp_executesql使用例子

MSDN:exec sp_executesql的主体部分:包含 Transact-SQL 语句或批处理的 Unicode 字符串。statement 必须是 Unicode 常量或 Unicode 变...
  • bin_520_yan
  • bin_520_yan
  • 2010年11月15日 20:59
  • 4200
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sql语句用变量 用exec sp_executesql 执行之
举报原因:
原因补充:

(最多只允许输入30个字)