如何在 T-SQL 中动态查询值?

发布于 2024-11-04 13:29:45 字数 558 浏览 6 评论 0原文

无论出于何种原因,我似乎无法从 SQL 中动态获取值。

declare @SQL nvarchar(max)
declare @FieldName nvarchar(255)
declare @FieldValue nvarchar(max)

select @SQL = 'SELECT TOP 1 ' + @fieldname 
       +' FROM MyTable WHERE CM_CASE_YEAR = ' + LEFT(@ClaimNumber, 2) 
       +' AND CM_CASE_NUMBER = ' + RIGHT(@ClaimNumber, 6)
exec sp_executesql @sql, @FieldValue OUTPUT
select @FieldName + ' - ' + @FieldValue

当我在另一个窗口中运行 @SQL 查询时,它显示一列和一个值。

但是,不幸的是,当我尝试这样做时,@FieldValue 总是返回 NULL。

他们教 sp_executesql 那天我错过了什么吗?明显地!但什么?

For whatever reason, I can't seem to get a value out dynamically from SQL.

declare @SQL nvarchar(max)
declare @FieldName nvarchar(255)
declare @FieldValue nvarchar(max)

select @SQL = 'SELECT TOP 1 ' + @fieldname 
       +' FROM MyTable WHERE CM_CASE_YEAR = ' + LEFT(@ClaimNumber, 2) 
       +' AND CM_CASE_NUMBER = ' + RIGHT(@ClaimNumber, 6)
exec sp_executesql @sql, @FieldValue OUTPUT
select @FieldName + ' - ' + @FieldValue

When I run the @SQL query in another window, it displays one column with one value.

But, unfortunately when I try this, @FieldValue always comes back NULL.

Did I miss something the day they taught sp_executesql? Obviously! But what?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

合久必婚 2024-11-11 13:29:45

看这个例子

DECLARE @SQL NVARCHAR(MAX)
DECLARE @FieldName sysname = 'name'
DECLARE @FieldValue NVARCHAR(MAX)

SELECT @SQL = 'SELECT TOP 1 
                    @FieldValue =' + QUOTENAME(@FieldName) + ' FROM sys.objects'

EXEC sp_executesql @SQL, 
                   N'@FieldValue nvarchar(max) OUTPUT',
                   @FieldValue =@FieldValue OUTPUT

SELECT @FieldName + ' - ' + @FieldValue

See this example

DECLARE @SQL NVARCHAR(MAX)
DECLARE @FieldName sysname = 'name'
DECLARE @FieldValue NVARCHAR(MAX)

SELECT @SQL = 'SELECT TOP 1 
                    @FieldValue =' + QUOTENAME(@FieldName) + ' FROM sys.objects'

EXEC sp_executesql @SQL, 
                   N'@FieldValue nvarchar(max) OUTPUT',
                   @FieldValue =@FieldValue OUTPUT

SELECT @FieldName + ' - ' + @FieldValue
ζ澈沫 2024-11-11 13:29:45

sp_executesql 返回(生成)结果集。 @FieldValue 在上面的代码中毫无意义 - sp_executesql 不会将任何值放入该变量中。

sp_executesql returns (generates) a resultset. @FieldValue is meaningless in the code above - sp_executesql won't put any value into that variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文