在sp_executesql中使用@ParmDefinition有什么好处

2023-12-01

DECLARE @id int
DECLARE @name nvarchar(20)
SET @id = 5
SET @name = 'Paul'

这两个选项有什么区别:

Set @SQLQueryInnen = 'SELECT * FROM someTable WHERE ID = ' + @id + ' AND NAME = ''' + @name + ''''
Execute sp_Executesql @SQLQueryInnen

and

Set @SQLQueryInnen = 'SELECT * FROM someTable WHERE ID = @id AND NAME = @name'
Set @ParmDefinition = '@id int, @name nvarchar(20)'
Execute sp_Executesql @SQLQueryInnen, @ParmDefinition, @id

到目前为止,我只看到使用 @ParmDefinition 时两次声明 @id 和 @name 数据类型的过度行为。另一方面,使用@ParamDefinition“字符串构建”似乎更容易一些。


第一种情况容易发生 SQL 注入并且存在安全风险。讨论到此为止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在sp_executesql中使用@ParmDefinition有什么好处 的相关文章

  • 按小时拆分日期/时间数据并将日期/时间范围展开为行

    我正在尝试使用 SQL Server 将一系列日期 时间数据扩展为多行 例如 我的数据看起来像 Date StartTime EndTime EmployeeID ShiftType 10 1 2019 8 30 00AM 4 57 00P
  • 清除表中的所有行将身份规范重置为零并且不影响外键?

    我们已经创建了数据库框架以及所有关系和依赖关系 但表内部只是虚拟数据 我们需要删除这些虚拟数据 并开始添加正确的数据 我们怎样才能清除所有内容并将主键 IsIdentity 是 保留为零 并且不影响外部表关系结构 多谢 您可以采取以下步骤
  • 仅当变量不为空时 SQL 添加过滤器

    您好 我有疑问如下 SELECT route id ROUTE ID FROM route master NOLOCK WHERE route ou 2 AND route query l s query AND lang id 1 这里
  • (SQL) 识别字段中字符串格式多次出现的位置

    我需要将叙述字段 自由文本 拆分为多行 目前的格式如下 Case Reference Narrative XXXX XX 123456 Endless Text up to 50k characters 在作为文本的叙述字段中 各个条目 当
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 从存储过程中的动态 SQL 获取结果

    我正在编写一个存储过程 需要在过程中动态构造 SQL 语句以引用传入的表名称 我需要让这个 SQL 语句返回一个结果 然后我可以在整个过程的其余部分中使用该结果 我尝试过使用临时表和所有内容 但我不断收到一条消息 提示我需要声明变量等 例如
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp
  • SQL Group BY,每个组的前 N ​​个项目

    我有一个 SQL 查询 可以获取给定商店中销量最高的 5 件商品 SELECT TOP 5 S UPCCode SUM TotalDollarSales FROM Sales S WHERE S StoreId 1 GROUP BY S U
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • SqlException超时未达到

    我们的服务器有时会抛出这个众所周知的异常 超时已过 操作完成之前超时时间已过 或者服务器未响应 当服务器处理大请求时 这种情况会在压力下发生 我做了一些研究 发现我可以改变连接字符串连接超时设置和 或SqlCommand 超时数据读取器属性
  • 使用 Powershell SQL 将数据提取到 Excel

    我想使用 powershell 将数据从 SQL Server 提取到新的 excel 文件 对于小型数据集 我的代码可以工作 但某些表的行数超过 100 000 行 这将需要很长时间 我不在 SQl 服务器中使用该实用程序的原因是因为我想
  • 在sql server 2008中插入新记录时如何检查数据库中的值是否已存在

    我创建了一个存储过程 用于从表中选择值 如果该值已经存在 那么它将更新该值 但如果不存在 那么它将插入新值 我为此使用了存储过程 如下所示 Create PROCEDURE dbo sp Insert Tid int NULL Quid i
  • PHP、PDO 和 SQLSRV 对一个 INSERT 语句执行多次

    我已经在 MySQL 和 Apache 服务器上使用 PDO 和 PHP 一段时间了 我最近的任务是将企业的旧 Web 应用程序转换为新设置 旧设置是标准 Linux Web 堆栈 Apache PHP MySQL Filezilla 新设
  • 使用 t-sql 检索已过滤的存储过程列表

    我正在尝试获取 t sql 中的存储过程列表 我正在使用该行 exec sys sp stored procedures 我想过滤回结果 所以我只获取用户创建的存储过程 我想过滤掉 sp dt fn xp 以及其他所有我不感兴趣的系统存储过
  • 如何在测试期间强制锁定升级(以消除死锁问题)?

    在此发布问题和一个答案 也许有人有更好的答案 编写触发死锁的代码是可能的即使对于单个用户如果开发人员不小心打开了与数据库的第二个连接 而不是重用现有的连接 可能已经有一个打开的事务 某些 O RM 和 LINQ 框架很容易犯这个错误 以下是
  • SSIS 将字符转换为布尔值/位

    我有一个SSIS包来加载数据 您可能还记得 当我尝试将数据文件中的标志作为位标志加载到 SQL Server 中时 这些标志作为 Y N char 1 存在 我将数据文件中的列指定为String DT STR 我有一个数据转换任务 根据以下
  • 在 Sql Server 中启用 DTD 支持

    我有各种 xml 文档需要存储在数据库列中 这些文档包含对 DTD 的引用 并且 SQL Server 不会导入 xml 因为它存在安全风险 如何在数据库上启用 DTD 支持 以便它可以让我插入 xml 内容 你必须CONVERT首先 MS
  • 'ExecuteReader 需要一个开放且可用的连接。连接的当前状态是打开'

    用 C 编写的相当大的 Web 应用程序不断抛出 2 个错误 ExecuteReader 需要一个开放且可用的连接 连接的当前状态是打开的 和 阅读器关闭时调用 Read 的尝试无效 这些错误是零星的 过去页面在大约 95 的情况下加载良好
  • 将 SQL Server varBinary 数据转换为字符串 C#

    我需要帮助弄清楚如何转换来自SQL服务器表列设置为varBinary 最大 转换为字符串以便将其显示在标签中 这是在C 我正在使用数据读取器 我可以使用以下方式提取数据 var BinaryString reader 1 我知道该列包含之前
  • 如何在没有聚合函数的情况下在sql server中创建枢轴查询

    我正在使用 MS SQL SERVER 2008 并且有以下数据 select from account PERIOD ACCOUNT VALUE 2000 Asset 205 2000 Equity 365 2000 Profit 524

随机推荐

  • 任一类型包含不同类型

    原始帖子已编辑为简化示例 我想创建一个组件 该组件将采用一对值 这两个值都基于相同类型 gt value setValue 并且基于它 将运行取决于这些类型的函数 为了充分说明情况 AnimalAndCatTypes ts export i
  • 如何使用 C 从用户空间获取 Linux 中的驱动器标签

    我需要在 Linux 中使用 c c 并且没有 d bus 获取特定设备的标签 问题是我不能只打开设备并读取它的信息 对于 extN 来说 很容易从设备获取标签 因为从 dev xxx 读取需要 root 权限 我认为现在在大多数发行版中都
  • 从 FullCalendar (jQuery) 中删除事件源时出现问题

    就在那时 我正在使用全日历显示来自多个源的事件 一些是本地 JSON feed 另一些来自 Google Calendar 我实现了一项功能 当复选框分别为 true 或 false 时 可以显示 隐藏单个日历 我正在使用这段代码来实现它
  • 如何从Delphi运行命令行?

    如何从我的 Delphi 应用程序运行此命令 C myapppath appfolder gt appname exe stext save txt 我尝试了以下代码 ShellExecute 0 nil cmd exe cd C myap
  • 在 SetWindowPos() 中获取跨线程操作无效

    我试图从与创建表单的线程不同的线程访问表单 最后出现错误 跨线程操作无效 Code public static void MakeTopMost Form form SetWindowPos form Handle HWND TOPMOST
  • 如何使用许多 OR 替代方案来缩短长 XPath 表达式?

    我正在努力让 Selenium 遍历大量替代条件 XPath 寻找满足以下条件的元素 可能匹配 并将其传递给对象elmnt 目前 使用OR操作员 代码很快就会变得非常重复和详尽 尤其是当存在很多可能的变化时 在下面的示例中 唯一的变化是我开
  • WKWebView确实从本地文档文件夹加载资源

    在我的 Swift iOS 应用程序中 我想从远程服务器下载一些动态 HTML 页面 将它们保存在文档目录中 并从文档目录中显示这些页面 我用它来加载页面 var appWebView WKWebView appWebView loadRe
  • Azure 服务主体可以更新自己的密码吗?

    我需要以编程方式使用 Azure 服务主体 1 添加 删除其他服务主体的密码 以及2 为自身添加 删除密码 1很容易做到 但由于以下错误 我似乎无法执行 2 2可能吗 如何 graphrbac PasswordCredentialsUpda
  • po [NSThread 当前线程]

    当我执行 po NSThread currentThread 时 我得到了 名称 空 数字 4 When I look to the left I see 看起来线程号是 6 而不是 4 另外 我们需要调用哪些属性来获取线程号 NSThre
  • 当方向改变时如何管理应用程序?

    我有一个正在更改屏幕方向的应用程序 但是 当我更改第一个屏幕的方向并转到下一个屏幕时 更改不会持续 附上图片以便更清楚地理解 主要问题是 当设备旋转时 第一个屏幕会旋转 但第二个屏幕不会以新方向启动 仅当我们在屏幕启动后改变方向时它才会旋转
  • 如何在 Python 类中创建增量 ID

    我想为我创建的每个对象创建一个唯一的 ID 这是该类 class resource cl def init self Name Position Type Active self Name Name self Position Positi
  • 全局静态初始化线程

    我有一个用互斥体保护的集合 初始化后 它只能被读取 所以我在那里不需要互斥体 该集合在全局静态初始值设定项中进行初始化和填充 我知道全局静态初始化是在单个翻译单元内保证的 是否可以保证全局静态初始化是单线程的 我有一个受 Schwarz 计
  • 为什么它不转一圈?以及如何修复它?

    我不确定正在创建的形状的名称是什么 但我认为是圆形和方形的组合 或者可能类似于圆柱体 您可以运行代码来查看它会形成什么形状 您能否推荐一个我可以学习编写游戏代码 基本游戏背后的算法 的网站 我希望你明白我的意思 因为我英语不好 import
  • 当 PictureBox 处于“缩放”模式时裁剪图像的正确部分[重复]

    这个问题在这里已经有答案了 我有一个 PictureBox1 其尺寸模式设置为 拉伸 并且 PictureBox1 PictureBox1 包含一个图像 让我选择它的一部分 然后裁剪它并将裁剪的部分存储在 PictureBox2 中 效果很
  • python中浮点精度的定义是什么?

    我了解到 Erlang 中的 完全等于 运算符 它不仅比较值 还有数字的数据类型 我很好奇 Python 中的工作原理及其唯一的 等于 运算符 所以在确定之后 gt gt gt 1 1 0 True 我想知道浮点精度 然后得到了这个 gt
  • 在 PHP 中从空值创建默认对象?

    仅在将 PHP 环境升级到 PHP 5 4 及更高版本后 我才会看到此错误 错误指向这行代码 Error 从空值创建默认对象 Code res gt success false 我是否需要首先声明我的 res object 你的新环境可能有
  • div 中的居中文本

    div div class left div align center class node div class nodeText h2 test h2 div div class node h2 test h2 div div class
  • mod_rewrite后获取变量

    我有一组遵循以下 htaccess 规则的产品页面 RewriteCond REQUEST FILENAME s RewriteCond REQUEST URI 0 9 html RewriteRule product index php
  • Opencv 和 python 用于自动裁剪

    我想自动裁剪图像 我正在为此使用 ImageMagick 我正在使用的命令 convert 3 jpg fuzz 10 trim trim jpg 我该如何解决 我认为正在设置的模糊因子存在问题 If you want to do this
  • 在sp_executesql中使用@ParmDefinition有什么好处

    DECLARE id int DECLARE name nvarchar 20 SET id 5 SET name Paul 这两个选项有什么区别 Set SQLQueryInnen SELECT FROM someTable WHERE