CREATE FUNCTION dbo.fTranslate (@TextId int, @LanguageId int)RETURNS nvarchar(100) -- Should use nvarchar, and set to max length of stringAS BEGIN SELECt [Text] -- Reserved wordin SQL, rename that column! FROM TableB WHERe TextId = @TextId And LanguageId = @LanguageId END
然后将查询写为:
SELECt ID, dbo.fTranslate(Title, @LanguageId) Title, dbo.fTranslate(Description, @LanguageId) Description FROM TableA
这可能效果不佳,因为您必须为返回的每一行的每个翻译列调用一次函数(即,每100行3列=
300个函数调用),但是如果您一次只返回一行,它的性能可能不会那么差。测试一下并保持警惕。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)