sp_executesql 与 参数
大家好,又见面了,我是你们的朋友全栈君。
总结了一下 sp_executesql 与 参数 的关系
sp_executesql 并不能通过参数列表指定任意部分,在普通sql语句中是变量的可以指定,是常量的不能指定。
在sp_executesql 执行的字符串中, 下面称为spStr,有些是在设置sql字符串前就必须指定的,有些是以变量的形式指定的。跟sql语句相一致,这里语句称为 sqlStr,凡是在sqlStr语句中必须要声明为常量的,在 执行 sp_executesql 前,spStr中的相应的部分,也必须已经被赋值了,以字符常量的形式存在了。如 create table constTableName …中的constTableName , select top constNum…中的 constNum。
如下是正确的
》----------------------------
declare @tableName nvarchar(20);
declare @spStr nvarchar(200);
set @ tableName = N’myTestTable’;
set @spStr = N’ create table’ + @ tableName + N’ … ‘
execute sp_executesql @spStr;
----------------------------------||
如下是错误的
》----------------------------
declare @tableName nvarchar(20);
declare @spStr nvarchar(200);
set @ tableName = N’myTestTable’;
set @spStr = N’ create table @ tableName … ‘
execute sp_executesql @spStr, N’ @ tableName nvarchar(20)’ ,@tableName
----------------------------------||
-----------------------------------------------
下面是以前写的一个动态存储过程
declare @nNum int; set @nNum = @nPageSize * ( @nCurPage – 1 );
set @charSQL = N’select top ‘ + cast(@nNum as nvarchar(20)) + N’ @nFirstID = nSceID ‘ + N’ from t_sceCardCN where ( t_sceCardCN.nSceID between @nItemIDMin and @nItemIDMax ) and ( t_sceCardCN.nSceClass = @nSceClass and t_sceCardCN.nSceGrade = @nSceGrade ) ‘
EXECUTE sp_executesql @charSQL ,N’@nNum int, @nFirstID int output , @nItemIDMin int, @nItemIDMax int, @nSceClass smallint, @nSceGrade smallint ‘ ,@nNum, @nFirstID output , @nItemIDMin,@nItemIDMax, @nSceClass, @nSceGrade
说明:@nNum,在 sp_executesql 虽然更在参数列表中,但是是没有什么意义的。是以前写的。现在才明白。呵呵
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143423.html原文链接:https://javaforall.cn
相关文章
- pandas drop参数_pandas concat函数
- 【C 语言】C 语言 函数 详解 ( 函数本质 | 顺序点 | 可变参数 | 函数调用 | 函数活动记录 | 函数设计 ) [ C语言核心概念 ]
- 【Redis】Redis 数据库操作 ① ( 数据库操作 | Redis 数据库连接参数 | Redis 数据库个数 | Redis 访问机制 )
- 金融GPT来了:500亿参数,但用来投资还是跑不赢大盘
- LoadRunner参数传递给参数
- FFmpeg 参数使用说明
- Oracle 参数 CONTROL_FILE_RECORD_KEEP_TIME 官方解释,作用,如何配置最优化建议
- Oracle 参数 DB_BLOCK_SIZE 官方解释,作用,如何配置最优化建议
- Oracle 参数 OPTIMIZER_INDEX_COST_ADJ 官方解释,作用,如何配置最优化建议
- MySQL Variables automatic_sp_privileges 数据库 参数变量解释及正确配置使用
- MySQL Variables sql_auto_is_null 数据库 参数变量解释及正确配置使用
- C++函数默认参数(详解版)
- 传递Linux下.sh脚本参数传递指南(linux.sh参数)
- c#线程间传递参数详解