存储过程的参数传递问题
2010-07-07 15:08
253 查看
--如何将exec执行结果放入变量中?
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
--------------------------------------------------------------------------------
动态sql语句基本语法
1 :普通SQL语句可以用Exec执行
eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N
2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格
当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错
declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确
3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中?
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
--存储过程的参数调用
--方法1:用动态SQL语句
declare @s varchar(1000),@值列表 varchar(1000)
set @值列表= '''aa'',''bb'',''cc'''
set @s='select * from 表名 where 字段 in (' + @值列表 + ')'
print @s
exec (@s)
--方法2:使用charindex
declare @值列表 varchar(1000)
set @值列表='aa,bb,cc'
select * from 表名 where charindex(',' + 字段 + ',',',' + @值列表 + ',') > 0
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
--------------------------------------------------------------------------------
动态sql语句基本语法
1 :普通SQL语句可以用Exec执行
eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N
2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格
当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错
declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确
3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中?
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
--存储过程的参数调用
--方法1:用动态SQL语句
declare @s varchar(1000),@值列表 varchar(1000)
set @值列表= '''aa'',''bb'',''cc'''
set @s='select * from 表名 where 字段 in (' + @值列表 + ')'
print @s
exec (@s)
--方法2:使用charindex
declare @值列表 varchar(1000)
set @值列表='aa,bb,cc'
select * from 表名 where charindex(',' + 字段 + ',',',' + @值列表 + ',') > 0
相关文章推荐
- 解决SQL中in参数在存储过程中的传递有关问题
- SQL server 存储过程中解决整数参数的传递问题
- 解决SQL中in参数在存储过程中的传递问题
- 终于解决了--调用存储过程提示传递参数多的问题!
- 分页存储过程,可将查询条件作为参数传递的分页查询存储过程
- 关于对MYSQL存储过程传递参数是纯数字还是字符串的判断
- Oracle关于创建存储过程权限问题以及带参数的游标的范例
- 每日学习总结:DropDownList是否已选择验证、存储过程参数为sql字符串问题、将截断字符串或二进制数据。\r\n语句已终止
- AspNetPager和urlrewritingnet用法(带多参数传递和分页存储过程)
- 使用mssql2008新特性(存储过程参数类型使用"用户自定义表"来实现批量DML更新多表)解决项目里遇到的性能问题
- sql server 存储过程中输入参数需要用in而失效的问题解决方案
- oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
- 关于调用存储过程获取参数返回值和输出参数注意的问题
- ReportView报表实现带参数存储过程创建报表以及为rdlc传递参数
- 关于存储过程number型参数初始化问题
- 存储过程中的output输出参数及return返回值参数问题
- 关于JDBC使用命名参数(named parameters)进行存储过程调用的问题
- mysql 存储过程参数的子参数问题,参数包含参数。。。ASP.ENT c# +mysql 5.5
- 存储过程--参数默认值的问题
- ASP.NET代码调用SQL Server带DateTime类型参数的存储过程抛出异常问题