Kas*_*ash 2 sql-server nvarchar
这给出了一个例外:'NVARCHAR' 不是公认的内置函数名称。
DECLARE @BatchIds TABLE
(
BatchId AS UNIQUEIDENTIFIER ,
UserLogonId AS NVARCHAR(80) ,
ReportStatus NVARCHAR(100) ,
Created DATETIME ,
RunTimeInMins AS INT ,
ReportName NVARCHAR(200)
)
Run Code Online (Sandbox Code Playgroud)
当我删除 NVARCHAR 的“AS”时,它不会给出任何异常。
DECLARE @BatchIds TABLE
(
BatchId AS UNIQUEIDENTIFIER ,
UserLogonId NVARCHAR(80) ,
ReportStatus NVARCHAR(100) ,
Created DATETIME ,
RunTimeInMins AS INT ,
ReportName NVARCHAR(200)
)
Run Code Online (Sandbox Code Playgroud)
关于为什么的任何建议?
更新:
请注意,我的问题更多地是针对为什么 AS 在这种情况下在幕后的工作方式不同,而不是试图解决工作情况。对于那些无法使第二个示例工作的人,请尝试此操作。这为我提供了与Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)相同的数据和 SQL Server 版本。
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]
Run Code Online (Sandbox Code Playgroud)
在此查询中为 NVARCHAR 放置一个 AS 会引发与上述相同的异常。
更新:
这已解决。只有当您编译它并且 SQL Server 允许您编译它时才会出现这种行为。但是当你运行它时,它会为使用 AS 的任何数据类型抛出异常。
您不需要拥有的所有AS关键字 - 只需像这样定义您的表变量:
DECLARE @BatchIds TABLE
(
BatchId UNIQUEIDENTIFIER ,
UserLogonId NVARCHAR(80) ,
ReportStatus NVARCHAR(100) ,
Created DATETIME ,
RunTimeInMins INT ,
ReportName NVARCHAR(200)
)
Run Code Online (Sandbox Code Playgroud)
尝试在我的 SQL Server 2008 R2(SP1 - 开发人员版)上运行示例 #2 时,出现以下错误:
消息 207,级别 16,状态 1,第 3 行
无效的列名称“UNIQUEIDENTIFIER”。消息 207,级别 16,状态 1,第 7 行
无效的列名称“INT”。
我必须删除AS关键字才能使其工作。UsingAS正在尝试为列定义别名- 但由于UNIQUEIDENTIFIERorINT是 SQL Server 中的保留关键字,您不能将它们用作列别名。SQL Server 2012 Express 也一样——我也遇到了这些错误,除非我删除那些不必要的AS关键字,否则无法让它工作
| 归档时间: |
|
| 查看次数: |
3464 次 |
| 最近记录: |