注册

急急 请教:DM可以创建动态视图吗怎么传参数

tianHS 2025/12/03 253 1

CREATE OR REPLACE VIEW
"MarginAIBasicBalanceV1" AS
SELECT c.*
FROM "MarginAIBasicBalance" c
INNER JOIN "MarginAICRMACList" ur
ON ur."custCode" = c."custCode"
WHERE ur."userId" = SYS_CONTEXT('USERENV','APP_USER_ID');

我想基于"MarginAIBasicBalance" 建一个动态视图,让SQL执行时,只能查询应用程序中用户登录后的员工ID APP_USER_ID相关的数据,使用 SYS_CONTEXT 对吗,有没有SESSION_CONTEXT ,在DBEAVER执行时,应该怎么设置员工ID参数


-- 创建自定义上下文命名空间(命名可自定义,比如APP_EMP_CONTEXT)
CREATE CONTEXT APP_EMP_CONTEXT USING SYS.DBMS_SESSION;

CALL SYS.DBMS_SESSION.SET_CONTEXT(
'APP_EMP_CONTEXT', -- 步骤1创建的上下文命名空间
'EMP_ID', -- 自定义变量名(比如EMP_ID,可改)
'EMP007' -- 应用层动态传入的员工ID(替换为实际值)
);

CREATE OR REPLACE VIEW "MarginAIBasicBalanceV1" AS
SELECT c.*
FROM "MarginAIBasicBalance" c
INNER JOIN "MarginAICRMACList" ur
ON ur."custCode" = c."custCode"
-- 引用自定义上下文的EMP_ID(对应应用员工ID)
WHERE ur."userId" = SYS_CONTEXT('APP_EMP_CONTEXT', 'EMP_ID');
这种方案达梦支持吗

回答 0
暂无回答
扫一扫
联系客服