sp_executesql 与 参数

sp_executesql 与 参数总结了一下 sp_executesql 与 参数 的关系 sp_executesql  并不能通过参数列表指定任意部分,在普通sql语句中是变量的可以指定,是常量的不能指定。在sp_executesql 执行的字符串中, 下面称为spStr,有些是在设置sql字符串前就必须指定的,有些是以变量的形式指定的。跟sql语句相一致,这里语句称为 sqlStr,凡是在sqlStr语句中必须要声明为常

大家好,又见面了,我是你们的朋友全栈君。

总结了一下 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  虽然更在参数列表中,但是是没有什么意义的。是以前写的。现在才明白。呵呵 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143423.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 从零使用qemu模拟器搭建arm运行环境

    从零使用qemu模拟器搭建arm运行环境本文从零开始介绍如何搭建qemu+arm的运行环境

  • mysql insert sql

    mysql insert sql

  • ASMX

    ASMX当Microsoft®.NETFramework第一次发布时,它引入了一个有突破性的Web服务框架,那就是ASMX。设计ASMX的目的在于尽可能地简化Web服务的开发过程,这样即使您不是XML专家,也可以创建并运行Web服务。ASMX是通过隐藏大多数基础XML和Web服务细节来实现这一点的。与强制开发人员直接处理SOAP信封和Web服务描述语言(W

  • android之layout布局和ListView中的一些属性介绍[通俗易懂]

    一.android:singleLine设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text=”test_ singleLine “android:singleLine=”true”android:layout_width=”20dp”将只显示”t…”如果不设置singleLine或者设置为false

  • 数据结构JAVA—递归算法「建议收藏」

    数据结构JAVA—递归算法「建议收藏」http://blog.csdn.net/wangjinyu501/article/details/8248492  原版一、基本概念       递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决

  • Python 学习笔记 变量 xxx XXX「建议收藏」

    Python 学习笔记 变量 xxx XXX「建议收藏」Python学习笔记变量xxxXXXname=”adalovelace”print(name.title())print(name.upper())print(name.lower())first_name=”ada”last_name=”lovelace”full_name=first_name+””+last_nameprint(full_name)print(“Hello,”+…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号