使用函数别名会导致“ GO附近的语法不正确”错误

时间:2018-12-10 16:09:32

标签: sql-server tsql

ALTER FUNCTION dbo.workflow_usage_bydep
    (@depId VARCHAR(255))
RETURNS TABLE 
WITH SCHEMABINDING 
AS 
    RETURN
        SELECT fn.slnxjob_id 
        FROM dbo.fn_dep_jobs(@depId, null, null, null, null, null, 0x08) fn
GO

我收到此错误:

  

第1行第15级状态1的消息102
  'GO'附近的语法不正确。

我无法避免GO,我知道它属于SSMS,并且我有大量的兆字节代码。仍然不知道该怎么办。我可以在函数内部重命名列,因此在实际代码中,我不需要使用别名,但是看起来很奇怪。

如果我删除别名,那么它将起作用。

ALTER FUNCTION dbo.workflow_usage_bydep
    (@depId VARCHAR(255))
RETURNS TABLE 
WITH SCHEMABINDING 
AS 
    RETURN
        SELECT slnxjob_id 
        FROM dbo.fn_dep_jobs(@depId, null, null, null, null, null, 0x08)
GO
  

[i]命令成功完成。[/ i]

1 个答案:

答案 0 :(得分:-1)

如果解析器“误解了”您想说的话,则可以在括号中提供帮助:

ALTER FUNCTION dbo.workflow_usage_bydep
    (@depId VARCHAR(255))
RETURNS TABLE 
WITH SCHEMABINDING 
AS 
    RETURN
        (SELECT fn.slnxjob_id 
        FROM dbo.fn_dep_jobs(@depId, null, null, null, null, null, 0x08) fn)
GO

很多时候它对于人类解释也很有用,因为如果有帮助,它是可选的。