You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带SCHEMABINDING选项的函数中如何获取当前会话LCID?

在带SCHEMABINDING的函数/视图中获取当前会话LCID的方法

由于带SCHEMABINDING的对象无法访问系统表,你可以通过硬编码@@LANGID与LCID的固定映射关系来实现需求——SQL Server中每种语言的langid(即@@LANGID返回值)和lcid的对应关系是固定不变的。

实现示例

创建一个带SCHEMABINDING的标量函数,通过CASE语句直接映射:

CREATE FUNCTION dbo.GetCurrentSessionLCID()
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
    RETURN CASE @@LANGID
        WHEN 0 THEN 1033     -- 美式英语 (US English)
        WHEN 23 THEN 2057    -- 英式英语 (British English)
        WHEN 1 THEN 1029     -- 捷克语 (Czech)
        WHEN 2 THEN 1031     -- 德语 (German)
        WHEN 3 THEN 1036     -- 法语 (French)
        WHEN 4 THEN 1034     -- 西班牙语 (Spanish)
        WHEN 16 THEN 1041    -- 日语 (Japanese)
        WHEN 17 THEN 1049    -- 俄语 (Russian)
        -- 可根据SQL Server实例已安装的语言,补充更多映射关系
        -- 完整列表可执行 SELECT langid, lcid, name FROM sys.syslanguages 获取
        ELSE NULL            -- 处理未预定义的语言ID
    END
END

使用说明

  1. 先执行SELECT langid, lcid, name FROM sys.syslanguages,获取你环境中所有语言的langid与lcid对应关系;
  2. 将需要的映射项补充到函数的CASE语句中;
  3. 该函数完全不依赖系统表,符合SCHEMABINDING的约束要求,可直接在绑定了架构的函数或视图中调用。

内容的提问来源于stack exchange,提问作者vbif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:17:20