1. 环境准备与权限配置

前提条件:确保Oracle 23ai数据库已正常部署,且启用原生AI引擎(默认开启);需为用户授予SELECT AI相关权限,确保能够调用AI生成SQL、执行查询。

-- 1. 创建使用SELECT AI的专用用户
CREATE USER select_ai_user IDENTIFIED BY SelectAI@123456;

-- 2. 授予基础权限(连接、查询、创建会话)
GRANT CONNECT, RESOURCE, CREATE SESSION TO select_ai_user;

-- 3. 授予SELECT AI相关权限(调用AI生成SQL、执行查询)
GRANT EXECUTE ON SYS.DBMS_CLOUD_AI TO select_ai_user;
GRANT SELECT ON SYS.DBA_TABLES TO select_ai_user;
GRANT SELECT ON SYS.DBA_TAB_COLUMNS TO select_ai_user;

-- 4. (可选)创建AI配置文件,启用表注释、约束感知
BEGIN
    DBMS_CLOUD_AI.CREATE_PROFILE(
        profile_name => 'MY_SELECT_AI_PROFILE',
        comments => TRUE, -- 启用表/列注释感知
        constraints => TRUE, -- 启用外键约束感知
        annotations => TRUE -- 启用Schema注解感知
    );
    -- 设置当前会话使用该配置文件
    DBMS_CLOUD_AI.SET_PROFILE(profile_name => 'MY_SELECT_AI_PROFILE');
END;
/

2. 高频场景实战示例

以下结合开发、业务分析中的高频场景,展示SELECT AI的实际使用方法,所有示例均无需编写SQL,仅通过自然语言即可完成。

场景1:业务分析——统计核心指标

需求:查询2025年第一季度(1-3月),华东区各产品类别的销售额、销量,按销售额降序排列,显示前10名。

-- 自然语言查询,直接执行并返回结果
SELECT AI '查询2025年1-3月华东区各产品类别的销售额和销量,按销售额降序排列,取前10名';

-- 若需查看生成的SQL,确认逻辑
SELECT AI showsql '查询2025年1-3月华东区各产品类别的销售额和销量,按销售额降序排列,取前10名';

执行后,SELECT AI会自动识别“华东区”对应的区域编码、“第一季度”对应的时间范围,关联产品表、销售表、区域表,生成多表关联查询SQL,无需用户手动指定关联条件、时间筛选逻辑,大幅节省业务分析时间。

场景2:开发测试——生成合成数据

需求:生成50条模拟员工数据,包含员工姓名、部门、入职时间(近3年)、工资,确保工资符合各部门薪资范围(研发部8000-15000,市场部6000-12000)。

-- 自然语言生成合成数据,插入员工表
SELECT AI '生成50条模拟员工数据,包含员工姓名、部门、入职时间(近3年)、工资;研发部工资8000-15000,市场部6000-12000,插入到emp表中';

场景3:多轮对话查询——深入分析数据

需求:先查询各区域2025年第一季度销售额,再追问华东区销售额占总销售额的比例,最后查询华东区销售额最高的3个产品。

-- 第一轮:查询各区域2025年第一季度销售额
SELECT AI '查询各区域2025年第一季度的销售额';

-- 第二轮:追问华东区销售额占比(无需重复描述时间范围、区域)
SELECT AI '华东区的销售额占总销售额的比例是多少';

-- 第三轮:追问华东区销售额最高的3个产品
SELECT AI '华东区销售额最高的3个产品是什么,分别对应多少销售额';

SELECT AI会自动记忆上下文,无需用户重复描述“2025年第一季度”“华东区”等关键信息,实现连贯的多轮对话查询,贴合日常分析的思维习惯。

场景4:RAG联动——结合文档与数据查询

需求:查询“某产品的最新定价”,结合向量库中的产品定价文档,确保结果准确。

-- 启用RAG联动,结合向量库文档查询
SELECT AI '查询产品ID为1001的最新定价,结合产品定价文档信息';

SELECT AI会自动检索向量库中与“产品1001定价”相关的文档内容,结合数据库中的定价数据,生成包含文档参考的精准回答,减少LLM的“幻觉”,提升结果可信度。

Related Posts