exec与sp_executesql

2023-10-18 20:18
文章标签 exec sp executesql

本文主要是介绍exec与sp_executesql,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总是嫌sp_executesql麻烦,执行动态语句的时候就直接用exec @sql了,反思

 

1.清空过程缓存

DBCC FREEPROCCACHE

2,执行以下语句,应该只有一句sql

select sql
FROM MASTER..SYSCACHEOBJECTS
where dbid=db_id('dbname')

3.执行以下语句declare @NAME nvarchar(30),@sql nvarchar(100)
set @name ='abc'
SET @SQL = 'Select * FROM account Where playerid = '''+@NAME +''''
EXEC  (@SQL)
set @name = 'def'
SET @SQL = 'Select * FROM account Where playerid = '''+@NAME +''''
EXEC  (@SQL)

4  再执行2,可以看到缓存了两条@sql的语句(参数不同)

5,执行1,清空缓存,执行以下语句

declare @NAME nvarchar(30),@sql nvarchar(100)
set @name ='abc'
SET @SQL = 'Select * FROM account Where playerid = @NAME'
EXEC  sp_executesql @SQL,N'@name varchar(50)',@name

set @name ='def'
SET @SQL = 'Select * FROM account Where playerid = @NAME'
EXEC  sp_executesql @SQL,N'@name varchar(50)',@name

6.可以看到执行的两条@sql 缓存的是一条,也就是说数据库不用从新编译第二条执行计划

7.一定注意sp_executesql 后面的数据类型声明一定要和表里的类型一样,不一样的话可能不会引起编译错误,但是可能引起不能引用索引,比如字段类型是char(1),但是在sp_executesql中声明的是int

 

 

这篇关于exec与sp_executesql的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234919

相关文章

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

Linux下的exec函数簇

目录 一、引言 二、exec函数簇简介 三、exec函数簇用法详解    1.execl    2.execlp    3.execle    4.execv    5.execvp    6.execvpe 四、exec函数簇原理剖析 五、实际应用场景 六、总结         本文将详细介绍Linux环境下exec函数簇的原理、用法及实际应用场

java 利用Runtime.getRuntime().exec()代码调用服务器执行命令

Process exec= Runtime.getRuntime().exec(command,null,newFile("/")); String result =StringUtils.trim(InputStreamUtils.getContentsAsString(exec.getInputStream(),"utf8"));//接收执行结果 注释:command是想要执行

深入解析 Docker exec 命令

目录 Docker exec 命令详解 常用选项 示例 注意  Docker 容器允许你在隔离的环境中运行应用程序,这样可以确保应用运行所需的环境是一致的,无论是在开发、测试还是生产环境中。当需要在 Docker 容器中执行命令时,通常会用到 docker exec 命令。下面是对 docker exec 命令的详细解释以及其工作原理的概述。 Docker exec

副本技能-亚马逊SP-API的依赖SDK包生产

1.环境配置 需求:Java环境,Maven环境,均需配置环境变量(可自行百度)! 2.下载api的接口模块代码 selling-partner-api-models项目GitHub库 3.下载 Swagger 代码生成器 Swagger代码生成器下载地址 自己找个目放着就好 4.查找SDK的配置JSON文件 SDK的接口配置JSON路径:selling-partner-api-mo

exec: /opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

ubuntu 使用arm-linux-gcc提示,明明工具存在,而且环境变量也设置好了 /opt/FriendlyARM/toolschain/4.4.3/bin//arm-linux-gcc: 15: exec: /opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found   file /opt/

D-ExecuteSQL

按道理一步步来的话是 先创建数据源,然后是session,然后是command,然后是Rowset。先CoCreateInstance()创建指向IDBpromptInitialize 的指针 pIDBpromtInitialize.pIDBPromptInitialize调用函数 promptDatasoure创建基于对话框的未初始化的数据源 IDBInitialize pDBConn

sqlserver中exec/sp_executesql的使用

--动态语句语法/******************************************************************************************************************************************************动态语句语法:exec/sp_executesql语法***********

MySQL 主从幂等复制slave_exec_mode=IDEMPOTENT

MySQL slave_exec_mode 参数用于控制主从复制数据冲突时的处理策略,可选值有STRICT和IDEMPOTENT,分别代表严格模式和幂等模式,默认值为STRICT,该参数可动态调整。 原文地址: https://mytecdb.com/blogDetail.php?id=76 STRICT,严格模式IDEMPOTENT,幂等模式 默认STRICT模式下,从库复制过程中

Linux进程间的通信(一)exec函数族,getenv获取系统环境变量,system和popen的区别,文件和记录锁定通信

目录 几个系统关键api exec函数族 getenv()  system() 文件和记录锁定通信 在Linux/Unix系统中,进程间通信方式(Inter-Process Comunication)通常有如下若干中方式: 1、文件和记录锁定 2、管道 3、信号 4、system-V 5、POSIX信号量 6、套接字 socket 这些通信机制统称IPC,它们各有