sql - 为什么 SQL Server 的 OBJECT_ID(NVARCHAR) 不带变量?

标签 sql sql-server sql-server-2008

那么为什么这行不通呢?

<!-- language: lang-sql -->
    DECLARE @tn NVARCHAR
    SET @tn = 'MyTable'
    SELECT OBJECT_ID(@tn)

当这样做时:

<!-- language: lang-sql -->
    SELECT OBJECT_ID('MyTable')

我需要将一个变量传递给这个函数。

最佳答案

确实如此。

declare @name sysname = N'sys.objects';
select object_id(@name);


-----------
-385

(1 row(s) affected)

在您的示例中,您声明了一个长度为 1 的变量(因为您是 omit the length )。 OBJECT_ID(N'M') 未找到任何内容并返回 NULL。

When n is not specified in a data definition or variable declaration statement, the default length is 1. When n is not specified with the CAST function, the default length is 30.

关于sql - 为什么 SQL Server 的 OBJECT_ID(NVARCHAR) 不带变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073442/

相关文章:

xml - 如何在不使用 SQL Server 中的 XQuery 对元素名称进行硬编码的情况下从 XML 中提取值?

c# - 将存储过程结果转换为模型对象

sql - 如何使用 SQL 将文本附加到数据库中的重复条目

c# - CodeFluent 中的连续 GUID

sql-server - 错误处理 - 确定 sp_executesql 是否是源

sql-server-2008 - 根据条件获取组中的最大值

sql-server-2008 - 在 SQL Server 2008 R2 上运行 50 MB 脚本时出现错误

sqlite并发问题

sql - 事件记录按两个单独的值分组

sql - 左连接生成带有值的行和带有 NULL 的另一行