【问题标题】:SQL won't print out my variableSQL 不会打印出我的变量
【发布时间】:2013-07-03 04:34:36
【问题描述】:

我正在使用 SQL 存储过程和动态 SQL。当我尝试调试一切正常时,直到我打印我的@columnName。

这是导致问题的代码部分:

DECLARE @query NVARCHAR(2000)
DECLARE @columnName NVARCHAR(250)
SELECT @query = 'SELECT myTable.value FROM myTable WHERE myConditions'
    EXECUTE sp_executesql @query, N'@columnName NVARCHAR(30) OUTPUT', @columnName OUTPUT
    PRINT N'query='+@query
    set @query = ''
    PRINT N'query after reset='+@query
    PRINT N'columnName='+@columnName
    PRINT N'any other message'
Select @query = 'SELECT myValues AS '''+@columnName+''',
                 FROM myTable2
                 WHERE myConditions';
EXEC(@query);

这是输出消息:

query=SELECT myTable.value FROM myTable WHERE myConditions
query after reset=

any other message

那么,我的columnName= 输出在哪里?

编辑

SQL 版本: Microsoft SQL Server 2012 - 11.0.2100.60 (X64) 2012 年 2 月 10 日 19:39:15 版权所有 (c) 微软公司 Windows NT 6.1(内部版本 7601:Service Pack 1)(管理程序)上的标准版(64 位)

【问题讨论】:

  • SQL 只是 结构化查询语言 - 许多数据库系统使用的语言,但不是数据库产品...很多事情都是特定于供应商的 - 所以我们真的需要知道您使用的是什么数据库系统(以及哪个版本)......
  • 在“EDIT”下添加了版本
  • 添加了适当的标签 sql-server-2012 - 你应该在其中指定这些类型的东西......

标签: sql debugging stored-procedures sql-server-2012 dynamic-sql


【解决方案1】:

将 SET CONCAT_NULL_YIELDS_NULL OFF 添加到进程的开头,以便在传递 NULL 值时打印语句的其余部分。

【讨论】:

  • 太棒了...正是我所追求的。谢谢。
  • 不知道这个存在。谢谢
【解决方案2】:

解决了。

事实证明,如果我添加带有 null 的内容,结果将为 null。因此,如果我添加'string to be printed'+NULL,则不会打印任何内容。现在我只需要弄清楚为什么我的变量没有值^^祝我好运!

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2020-02-11
    • 2019-03-16
    • 1970-01-01
    • 2010-09-25
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多