0

我已经创建了一个函数,用于在 MS SQL Server 2005 中检索数据库列的翻译,具体取决于所选的语言代码(例如“el-GR”)。该函数本身可以正常工作,但我无法将其结果用作检索列的别名。

这是我正在使用的代码:

SELECT
    tblAuditors.[Full Name] as dbo.GetLocalizedGridTranslation('Auditor Name', @languageCode)
FROM tblCompanyAuditors

有谁知道我可以如何欺骗 SQL Server 允许我使用该函数作为别名?

4

2 回答 2

2

将别名括在括号中[]

SELECT 
   [dbo.GetLocalizedGridTranslation('Auditor Name', @languageCode)] = tblAuditors.[Full Name]
FROM tblAuditors

除此之外,您查询表格tblCompanyAuditors但该列来自表格是否是错字tblAuditors

编辑:我只是注意到列别名本身应该是函数的结果。

那有意义吗?别名是所有记录的列,每个记录都会执行一个函数。如果这是一个存储过程,我建议将结果存储在一个变量中,并将其用作动态 sql 中的列别名。

DECLARE @column_alias VARCHAR(30)
SET @column_alias = dbo.GetLocalizedGridTranslation('Auditor Name', @languageCode);

-- Use dynamic SQL
DECLARE @sql VARCHAR(1000)
SET @sql = 'SELECT tblAuditors.[Full Name] AS ' + @column_alias + ' FROM tblAuditors'

EXEC sp_executesql @sql
于 2012-07-23T11:46:40.520 回答
1

我认为您将需要使用动态 SQL

IE

 declare @sql nvarchar(max)
 select @sql = 'SELECT tblAuditors.[Full Name] as ['
      + dbo.GetLocalizedGridTranslation('Auditor Name', @languageCode) 
      + '] FROM tblCompanyAuditors'

 exec sp_executesql @sql
于 2012-07-23T12:31:03.347 回答