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

如何从Schema B调用存储过程,在Schema A中创建DBMS_CLOUD外部表?

解决方案

要实现从Schema B调用Schema A的存储过程,同时在Schema A中创建外部表,按以下步骤操作:

  • 恢复存储过程的默认权限模式:去掉存储过程定义中的AUTHID CURRENT USER,使用默认的AUTHID DEFINER。这样存储过程执行时会以Schema A的身份运行,拥有Schema A的权限。
  • 给Schema B授予存储过程执行权限:执行以下SQL语句,让Schema B能调用Schema A的存储过程:
    GRANT EXECUTE ON schema_a.your_procedure_name TO schema_b;
    
  • 在存储过程中明确指定Schema A的表名:调用dbms_cloud.create_external_table时,给table_name参数加上Schema A的前缀,确保表创建在Schema A下。修改后的代码示例:
    dbms_cloud.create_external_table(
        table_name      =>  'SCHEMA_A.' || l_table_name, 
        credential_name =>  p_credential_name, 
        file_uri_list   =>  l_obs_url, 
        format          =>  '{"type":"parquet", "schema": "first"}'
    );
    
  • 确认Schema A的权限充足:确保Schema A拥有CREATE TABLE权限,以及EXECUTE ON dbms_cloud权限,同时存储过程能访问指定的credential(如果credential属于Schema A,默认即可访问;如果属于其他用户,需要授予对应访问权限)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:42:10