具有行为奇怪的多值参数的存储过程

2024-03-20

我在 SQL Server 中创建了一个存储过程来为 SSRS 提供数据,以使其能够接受多个值。

我已经创建了它,当我在报告中使用它或在 SQL Server 中执行它时,我收到以下错误消息。

消息 207,第 16 层,状态 1,第 35 行
列名称“伦敦”无效。

我有什么遗漏的吗?谢谢

这是我的样本数据。随意用它创建表格

DECLARE @MyTables AS TABLE (ID INT, City VARCHAR(100))

INSERT INTO @MyTables VALUES
(1, 'London'),
(2, 'Chester'),
(3, 'Luton'),
(4, 'New York'),
(1, 'London'),
(2, 'Chester'),
(5, 'Paris'),
(5, 'Paris'),
(2, 'Chester'),
(2, 'Chester')

SELECT * FROM @MyTables

这是我的动态存储过程的代码:

CREATE PROCEDURE dbo.CitiesGroup
    @Cities NVARCHAR(Max) -- this are the parameters
AS
BEGIN
    DECLARE @sqLQuery VARCHAR(MAX)
    DECLARE @AnswersTempTable TABLE 
                              (  
                                  ID INT,
                                  City VARCHAR(250)
                              )
    SET @sqlQuery = 'SELECT ID, City
                     FROM MyTables
                     WHERE CONVERT(nvarchar(Max), City) IN (' + @Cities + ')

                     INSERT INTO @AnswersTempTable
                         EXEC (@sqlQuery)

                     SELECT * FROM @AnswersTempTable'
END

Thanks

EXEC dbo.CitiesGroup 'London'

错误信息:

消息 207,第 16 层,状态 1,第 32 行
无效的列名称“伦敦”


还有另一种方法可以做到这一点。为什么不使用函数拆分参数,而不是将值传递到动态查询中?本文 https://sqlperformance.com/2012/07/t-sql-queries/split-strings写于亚伦·伯特兰 https://stackoverflow.com/users/61305/aaron-bertrand演示如何在 sql server 中拆分字符串的不同方法。

一旦选择了其中一个函数,您就可以简单地重写存储过程,而无需在内部创建动态查询。

CREATE PROCEDURE dbo.CitiesGroup
    @Cities NVARCHAR(Max) -- this are the parameters
AS
BEGIN
    -- simplified query
    -- write your complex logic here
    SELECT ID, City
    FROM MyTables
    WHERE City IN (SELECT Item FROM dbo.SplitStrings_CTE(@Cities, N',');)
END

Usage:

EXEC dbo.CitiesGroup 'London'
GO

EXEC dbo.CitiesGroup 'London,New York,Paris'
GO

有用的链接:

以正确的方式分割字符串——或者次佳的方式 https://sqlperformance.com/2012/07/t-sql-queries/split-strings

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

具有行为奇怪的多值参数的存储过程 的相关文章

  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下
  • 跨多个表进行搜索,并在结果行中显示表名称

    如何构建 SQL 语句以跨多个平面不相关的表运行 并使用选择结果和结果来自的表的名称显示结果 这种情况是这样的 我有几个表 每个表都有相同的列名 这是我从外部各方收到的数据 并将其存储在不同的表中 相同的表看起来像 Table 1 pid
  • 如何使用动态 url 将图像添加到 SSRS 报告?

    我正在尝试将图像添加到报告中 图像 src url 是IHttpHandler http msdn microsoft com en us library system web ihttphandler aspx这需要一些查询字符串参数 这
  • 如何 md5 所有列(无论类型如何)

    我想创建一个 sql 查询 或 plpgsql 它将 md5 所有给定的行 无论类型如何 但是 在下面 如果 1 为空 则哈希为空 UPDATE thetable SET hash md5 accountid accounttype cre
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • XML 解析:格式良好的检查:未声明的实体

    我正在使用 SSMS 2008 但收到以下错误 你知道这意味着什么吗 Msg 9448 Level 16 State 1 Line 4 XML parsing line 1 character 89 well formed check un
  • C#的数组列表可以用来填充SSIS对象变量吗?

    我已在 C 脚本中填充了一个列表 并将其值分配给 SSIS 对象变量 然后 我使用该对象变量通过循环遍历 For every do 枚举器来执行一些 SQL 查询 我尝试通过 Foreach ado 枚举器执行此操作 但出现错误 X 变量不
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • SQL - != 'NULL' 的解释

    我的SSMS代码如下 Select top 50 From FilteredContact Where statuscode 1 and emailaddress1 NULL and telephone1 NULL and address1
  • 可以获取SQL Server中当前执行的存储过程的行号吗?

    几年前 我在 Sybase Delphi 环境中工作 使用 BDE 连接到数据库服务器 我们有一个 Delphi 小应用程序 给定当前正在执行的存储过程的名称 它可以告诉您当前正在执行该存储过程的哪一行 这对于调试似乎挂起的存储过程非常有用
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • MS ACCESS 计数/求和行数,不重复

    我有下表 我需要计算总行数而不包括任何重复记录 CustomerID test1 test1 test2 test3 test4 test4 如您所见 总行数为 6 但有两个 test1 和两个 test4 我希望查询返回 4 IOW 我想
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • VB6+SQL-Server:如何使用 ADODB.Command 执行带有命名参数的查询?

    我一直在尝试使用 ADODB Command 执行参数化查询 我知道我可以使用 对于参数 但我的查询相当大 我真的不想跟踪参数的确切顺序 我尝试了类似以下的操作 objCmd CommandType adCmdText objCmd Com

随机推荐

  • Google 地图 API v3 - 鼠标移动和单击事件组合

    如果我将一个单击事件连接到我的地图 然后我连接了一个鼠标移动事件 则单击事件将不再起作用 我想没有人知道这件事吧 顺便说一句 这是 3 4 版本中的 举个简单的例子 var map function initialize var myLat
  • 当 RichTextBox 刚刚加载/为空时,WPF EditingCommands 不起作用?

    这是一个非常简单的代码示例
  • 迁移到.Net Core 3后JsonPatchDocument为空

    我有一个包含多个补丁操作的 AspNetCore WebApi Project 它在 Core 2 2 上运行良好 迁移到 Core 3 后 FromBody JsonPatchDocument
  • 3路快速排序(C实现)

    我试着实施 https github com p1v0t Sort一些算法是使用 C 的纯通用算法 我坚持使用 3 路快速排序 但不知何故 实现没有给出正确的输出 输出几乎已排序 但某些键不在应有的位置 代码如下 提前致谢 include
  • SQL Server:表中的最大行数[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我开发的软件在其数据库表之一 SQL Server 版本 8 9 或 10 中存储大量数据 每天大约有 100 000 条记录插入到该表中
  • Ruby 1.9.2 和 Rails 3 无法打开 Rails 控制台

    gkaykck main myApplication rails console usr local lib ruby 1 9 1 irb completion rb 9 in require no such file to load re
  • Java Mail MimeUtility 编码文本 UnsupportedEncodingException BASE64

    作为我的一部分J2EE应用程序的电子邮件服务 我编码成BASE64 body MimeUtility encodeText orig mail body UTF 8 BASE64 但在某些情况下它会抛出异常 java io Unsuppor
  • Powershell替换存储在多个文件夹中的多个文件中的文本

    我想替换多个文件和文件夹中的文本 文件夹名称发生变化 但文件名始终为 config xml fileName Get ChildItem C config app config xml Recurse Get Content fileNam
  • 如何通过 Cloud DNS api 将自定义域映射到应用程序引擎应用?

    是否有任何文档解释如何仅通过 Cloud DNS API 或任何其他 Google Cloud API 将自定义域映射到 App Engine 上托管的应用 我已经为 www my domain com 添加了 CNAME 记录 指向 gh
  • 如何在asp.net中删除.aspx .asmx后缀

    我们的大部分应用程序都是基于asp net 所以所有的 url 都会有后缀 如 aspx 或 asmx 我想知道是否有什么想法可以删除它们 查看以下教程之一 URL路由 ASP Net 4 0 及更高版本 使用 ASP NET 4 Web
  • 使用java下载zip文件?

    我正在使用 Java 从 Web 服务器下载 zip 文件 但不知何故我在每个文件中丢失了大约 2kb 我不知道为什么 因为相同的代码可以很好地处理其他格式 例如文本 mp3 等 任何帮助表示赞赏 这是我的代码 public void do
  • 如何折叠区域中的空白?

    假设我有这个列表文本文件 field1 variable length field variable length field aaaaaa aaaa aaaaaaaaa bbbbbb bbbbbbbbbbbbbbbbbbbb bbbb 我
  • 如何按顺序执行多个方法?

    强制方法按顺序执行的最佳方法是什么 我有三个方法 但我希望方法1在方法2之前完成 然后当方法2完成时 执行方法3 Example void Method1 void Method2 void Method3 self Method1 sel
  • 通话中状态栏如何影响 ViewController 视图大小?

    我试图理解如何view关联到一个UITabBarController UINavigationController or UIViewController当通话状态栏切换时做出反应 我的问题是它们的行为似乎不同 这会给我带来副作用 我制作了
  • 错误:无法启动新线程

    我有一个使用以下配置运行的网站 Django mod wsgi 阿帕奇 在一个用户的请求中 我向另一个服务发送另一个HTTP请求 并通过python的httplib库解决了这个问题 但有时此服务得不到答复的时间太长 并且 httplib 的
  • 通过 URL 自动登录用户

    我每周向网站的注册会员发送一封邮件 其中包含该网站上私人页面的 URL 出于可用性目的 我不希望用户在单击 URL 后必须提供凭据 我正在使用 ASP NET 会员提供程序模型 Question 我如何实现这一点 以便用户可以通过单击专门的
  • 使用传递的参数附加方法后分离事件处理程序

    我需要将参数 在 C 中 传递给事件处理程序 然后能够分离事件处理程序 我附加事件处理程序并传递参数 map MouseLeftButtonUp sender e gt map MouseLeftButtonUp2 sender e sho
  • Python 导入机制

    我有两个相关的 Python 导入 问题 它们很容易测试 但我想要语言定义的答案而不是特定于实现的答案 而且我也对样式 约定感兴趣 所以我在这里问 1 如果模块 A 导入模块 B 模块 B 导入模块 C 模块 A 中的代码是否可以在不显式导
  • 如何获取 Binder 事务缓冲区的内容以进行故障排除

    有没有办法以编程方式或通过调试工具来了解 Binder 事务缓冲区中保存的当前事务 有时 通常在运行数小时 数天后 我的应用程序会崩溃并出现如下错误跟踪 08 30 09 49 57 459 1879 1904 E JavaBinder F
  • 具有行为奇怪的多值参数的存储过程

    我在 SQL Server 中创建了一个存储过程来为 SSRS 提供数据 以使其能够接受多个值 我已经创建了它 当我在报告中使用它或在 SQL Server 中执行它时 我收到以下错误消息 消息 207 第 16 层 状态 1 第 35 行