0

選択した言語コード(「el-GR」など)に応じて、MS SQLServer2005でデータベース列の翻訳を取得するための関数を作成しました。関数自体は正しく機能しますが、取得した列のエイリアスとしてその結果を使用できません。

これは私が使用しているコードです:

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を使用する必要があると思います

すなわち

 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 に答える