这个例外:'NVARCHAR'不是公认的内置函数名。
DECLARE @BatchIds TABLE
(
BatchId AS UNIQUEIDENTIFIER ,
UserLogonId AS NVARCHAR(80) ,
ReportStatus NVARCHAR(100) ,
Created DATETIME ,
RunTimeInMins AS INT ,
ReportName NVARCHAR(200)
)
当我删除NVARCHAR的“AS”时,它不会给出任何例外。
DECLARE @BatchIds TABLE
(
BatchId AS UNIQUEIDENTIFIER ,
UserLogonId NVARCHAR(80) ,
ReportStatus NVARCHAR(100) ,
Created DATETIME ,
RunTimeInMins AS INT ,
ReportName NVARCHAR(200)
)
有关原因的任何建议吗?
更新
请注意,我的问题更多的是针对为什么AS在幕后工作的情况与尝试解决工作情况不同。 对于那些无法获得第二个样本的人,请尝试这个。 这给了我插入的相同数据没有错误和SQL Server版本 Microsoft SQL Server 2008 R2(RTM) - 10.50.1600.1(X64)....
DECLARE @BatchIds TABLE
(
UserLogonId NVARCHAR(80) ,
ReportStatus NVARCHAR(100) ,
Created DATETIME
)
INSERT INTO @BatchIds
( UserLogonId ,
ReportStatus ,
Created
)
VALUES ( 'Test1' ,
'Test2' ,
'2012-08-08'
)
SELECT *
FROM @BatchIds
SELECT @@VERSION AS [Version]
在此查询中为此NVARCHAR设置AS会引发与上述相同的异常。
更新
这已经解决了。此行为仅在您编译它时,SQL Server允许您编译它。但是当你运行它时,它会使用AS抛出任何数据类型的异常。
答案 0 :(得分:4)
您不需要所有AS
个关键字 - 只需像这样定义表变量:
DECLARE @BatchIds TABLE
(
BatchId UNIQUEIDENTIFIER ,
UserLogonId NVARCHAR(80) ,
ReportStatus NVARCHAR(100) ,
Created DATETIME ,
RunTimeInMins INT ,
ReportName NVARCHAR(200)
)
尝试在我的SQL Server 2008 R2(SP1 - Developer Edition)上运行示例#2时,我收到以下错误:
Msg 207,Level 16,State 1,Line 3
列名称'UNIQUEIDENTIFIER'无效。Msg 207,Level 16,State 1,Line 7
列名称“INT”无效。
我必须删除AS
个关键字才能使其正常运行。使用AS
尝试为列定义别名 - 但由于UNIQUEIDENTIFIER
或INT
是SQL Server中的保留关键字,因此您不能将其用作列别名。对于SQL Server 2012 Express也是如此 - 我也会收到这些错误,除非删除那些不必要的AS
关键字,否则无法使其生效