- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在简化版本中,我正在尝试做类似的事情:
Set @datepart = 'DATEPART(year, myDate)'
Set @SQLQuery = 'SELECT @datepart AS TIME
FROM someTable
GROUP BY @datepart'
Execute sp_executesql @SQLQuery, N'@datepart nvarchar(1000)', @datepart
但我明白:
Each GROUP BY expression must contain at least one column that is not an outer reference.
如果我不参数化它,它就会工作,意味着
Set @SQLQuery = 'SELECT ' + @datepart + ' AS TIME
FROM someTable
GROUP BY ' + @datepart
Execute sp_executesql @SQLQuery
最佳答案
通过使用参数化查询,您无法实现您想要做的事情,唯一的方法是简单的动态查询
Set @SQLQuery = 'SELECT ' + @datepart + ' AS TIME
FROM someTable
GROUP BY ' + @datepart
Execute sp_executesql @SQLQuery
因为变量只是在动态查询中充当值。考虑以下示例。
DECLARE @datepart NVARCHAR(1000),
@SQLQuery NVARCHAR(max)
SET @datepart = 'DATEPART(year, getdate())'
SET @SQLQuery = 'SELECT @datepart AS TIME'
EXECUTE Sp_executesql
@SQLQuery,
N'@datepart nvarchar(1000)',
@datepart
根据你的说法,答案应该是2015
,但结果是
DATEPART(year, getdate())
关于sql-server - sp_executesql 按 "must contain at least one column that is not an outer reference"分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31673814/
系统存储过程,sp_executesql 语言在这里! sp_executesql 执行可以多次重用或动态生成的Transact-SQL语句或批处理。Transact-SQL语句或批处理可以包
我捕获了一个由 Entity Framework 生成的查询,其中一个参数可以在 nvarchar(max) 中存储大量(400,000+ 个字符)的文本信息。 field 。我遇到的问题是,在执行语
我正在使用带参数的查询来创建数据库用户和 SQL Server 登录名。我有下一个程序: PROCEDURE [dbo].[regNewOfficial] @name nvarchar(30), @p
我正在 SQL Server 2005 中编写一个存储过程,在给定的时间点我需要执行另一个存储过程。这个调用是动态的,所以我像往常一样使用了 sp_executesql 命令: DECLARE @DB
尽管在将变量传递给 sp_executesql 时将变量声明为“游标”类型,但我收到错误“操作数类型冲突:nvarchar 与游标不兼容”。 declare CURSOR_TO_PASS cursor
我不明白为什么以下给我错误。我认为这与注释掉的部分有关,但@SQL 是 nvarchar(4000)。 BEGIN sp_executesql N'SELECT ''td''' --sp_ex
以下两个查询返回不同的结果。我知道差异与处理日期的时间部分的方式有关,但为什么会这样? // QUERY ONE select top 3 OrderDate from Orders where Or
我想从查询中获取 ID,但我得到的是 NULL,我的错误在哪里? DECLARE @TblZimz NVARCHAR(256) DECLARE @IdModul INTEGER DECLA
我正在调用一个存储过程并从我的 Windows 应用程序中传入 2 个日期作为参数。它返回所有行而不是我期望的 2 行。 存储过程是: ALTER procedure [dbo].[Get_Entri
在数据库表上运行 sp_executesql 时遇到一些问题。在本例中,我使用 ORM (NHibernate) 生成一个查询一个表的 SQL 查询。该表大约有 700 万条记录,并且索引很高。 当我
我正在调用一个存储过程并从我的 Windows 应用程序中传入 2 个日期作为参数。它返回所有行而不是我期望的 2 行。 存储过程是: ALTER procedure [dbo].[Get_Entri
我正在调用下面的代码。 在 (IDataReader dr = cmd.ExecuteReader()) sql barfs 行上,“CompanyUpdate”附近的语法不正确。 using
Msg 102, Level 15, State 1, Line 3 Incorrect syntax near '+'. 当你尝试执行下面这段代码时,会得到如上这个错误提
是否可以动态地向 sp_ExecuteSql 提供参数列表? 在 sp_ExecuteSql 中,查询和参数定义是字符串。我们可以为这些使用字符串变量,并传入我们想要执行的任何查询和参数定义。但是,在
我需要帮助将我的“用户定义表类型”参数传递给动态 sql sp_executesql。 这是我的示例代码: DECLARE @str as nvarchar(Max) DECLARE @IDLIST
有什么方法可以使用不依赖于它们在商店中定义的顺序的参数调用 sp_executesql 吗?与 exec 相同的查询效果很好,如果您有相同的顺序,它也可以很好地工作,但是必须一个一个地匹配参数很痛苦,
我需要执行一段动态 SQL,然后需要将结果存储到变量中。 我知道我可以使用 sp_executesql 但找不到有关如何执行此操作的明确示例。 最佳答案 如果你有 OUTPUT 参数,你可以这样做 D
我在执行下面的代码时遇到问题,它给出了如下错误: Msg 102, Level 15, State 1, Line 3 Incorrect syntax near '@ST'. 我可以尝试使用动态 S
我正在使用 C# 中的 Entity Framework ,并且遇到了一个问题,我已追踪到生成的 SQL 语句。 存储过程接受表值参数,但这似乎不是问题。 在 SQL Profiler 中,我看到正在
我有一个查询,它在 SQL Server Management Studio 中运行速度非常快,但在 sp_ExecuteSQL 下运行时运行速度非常慢。 这是否与在 sp_ExecuteSQL 下运
我是一名优秀的程序员,十分优秀!