- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有带有输入参数@param1 @param2
等的存储过程sp_Example
。在sp_Example
存储过程中我使用dynamic通过调用
并返回结果。执行 sp_executesql
进行查询sp_executesql
后,它无法看到 sp_Example
中的参数,并且出现以下错误:必须声明标量变量 @param2
这是我的 sp_Example
的示例:
CREATE PROCEDURE sp_Example
@param1 INT,
@param2 NVARCHAR(20) = ''
AS
BEGIN
IF (@param1 = 1)
BEGIN
-- There doesn't matter how select looks like so I pass dots
SELECT @cols += .... + ','
FROM (SELECT ....
FROM ....
WHERE ....
) a
SET @cols = LEFT(@cols, LEN(@cols) - 1)
SET @sql = 'SELECT * FROM
(
SELECT ....
FROM ....
WHERE FI.test = @param2 -- Here I'm trying to get input parameter
-- @param2 from sp_Example
) x
PIVOT
(
MIN (Val)
FOR NamePiv IN (' + @cols + ')
) p'
EXEC Sp_executesql @sql -- This one is IMPORTANT row
-- When this executed I got error:
-- That must declare scalar variable @param2
END
...
END
有什么解决办法吗?
最佳答案
您需要将 @Param2
传递给 sp_ExecuteSQL
,如下所示:检查 sp_ExecuteSQL 上的语法是否正确
EXEC sp_ExecuteSQL @sql, N'@Param2 NVARCHAR(20)', @Param2
关于mysql - 如何在 sp_executesql 中使用来自其他存储过程的输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28337790/
系统存储过程,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 下运
我是一名优秀的程序员,十分优秀!