在 PL/SQL 包中使用 Oracle 构造函数
Use Oracle constructor function in PL/SQL package
在 oracle ADB 上(认为是 19C)我有这个工作 SQL 函数来重命名对象存储文件:
declare
namespace_name VARCHAR2(30) := 'XX';
bucket_name varchar2(100) := 'XX';
region VARCHAR2(30) := 'eu-frankfurt-1';
cred VARCHAR2(30) := 'OCIDI_CRED';
rename_values dbms_cloud_oci_object_storage_rename_object_details_t;
result dbms_cloud_oci_obs_object_storage_rename_object_response_t;
begin
-- set the object name and rename values
rename_values := dbms_cloud_oci_object_storage_rename_object_details_t(source_name => '1.txt',
new_name => '2.txt', -- CSV_Manual/1.txt for example to put in folder
src_obj_if_match_e_tag => NULL,
new_obj_if_match_e_tag => NULL,
new_obj_if_none_match_e_tag => NULL);
-- Execute the task and get a status code and the task run key
result := dbms_cloud_oci_obs_object_storage.rename_object(namespace_name => namespace_name,
bucket_name => bucket_name,
rename_object_details => rename_values,
opc_client_request_id => NULL,
region => region,
endpoint => NULL,
credential_name => cred);
dbms_output.put_line('status code: ' || result.status_code);
end;
它正在使用一些已播种的 oracle 类型,它是构造函数类型:
dbms_cloud_oci_object_storage_rename_object_details_t;
dbms_cloud_oci_obs_object_storage_rename_object_response_t;
如何在 plsql 包中将此代码正确转换为 运行?
关于如何以及在何处声明它们存在问题
谢谢
您只需要用包语法包装 PL/SQL 块吗?
create or replace package cloud_storage is
procedure rename_files;
end;
/
create or replace package body cloud_storage is
procedure rename_files is
namespace_name VARCHAR2(30) := 'XX';
bucket_name varchar2(100) := 'XX';
region VARCHAR2(30) := 'eu-frankfurt-1';
cred VARCHAR2(30) := 'OCIDI_CRED';
rename_values dbms_cloud_oci_object_storage_rename_object_details_t;
result dbms_cloud_oci_obs_object_storage_rename_object_response_t;
begin
-- set the object name and rename values
rename_values := dbms_cloud_oci_object_storage_rename_object_details_t(source_name => '1.txt',
new_name => '2.txt', -- CSV_Manual/1.txt for example to put in folder
src_obj_if_match_e_tag => NULL,
new_obj_if_match_e_tag => NULL,
new_obj_if_none_match_e_tag => NULL);
-- Execute the task and get a status code and the task run key
result := dbms_cloud_oci_obs_object_storage.rename_object(namespace_name => namespace_name,
bucket_name => bucket_name,
rename_object_details => rename_values,
opc_client_request_id => NULL,
region => region,
endpoint => NULL,
credential_name => cred);
dbms_output.put_line('status code: ' || result.status_code);
end;
end;
/
然后你可以调用包和过程:
begin
cloud_storage.rename_files;
end;
/
在 oracle ADB 上(认为是 19C)我有这个工作 SQL 函数来重命名对象存储文件:
declare
namespace_name VARCHAR2(30) := 'XX';
bucket_name varchar2(100) := 'XX';
region VARCHAR2(30) := 'eu-frankfurt-1';
cred VARCHAR2(30) := 'OCIDI_CRED';
rename_values dbms_cloud_oci_object_storage_rename_object_details_t;
result dbms_cloud_oci_obs_object_storage_rename_object_response_t;
begin
-- set the object name and rename values
rename_values := dbms_cloud_oci_object_storage_rename_object_details_t(source_name => '1.txt',
new_name => '2.txt', -- CSV_Manual/1.txt for example to put in folder
src_obj_if_match_e_tag => NULL,
new_obj_if_match_e_tag => NULL,
new_obj_if_none_match_e_tag => NULL);
-- Execute the task and get a status code and the task run key
result := dbms_cloud_oci_obs_object_storage.rename_object(namespace_name => namespace_name,
bucket_name => bucket_name,
rename_object_details => rename_values,
opc_client_request_id => NULL,
region => region,
endpoint => NULL,
credential_name => cred);
dbms_output.put_line('status code: ' || result.status_code);
end;
它正在使用一些已播种的 oracle 类型,它是构造函数类型: dbms_cloud_oci_object_storage_rename_object_details_t; dbms_cloud_oci_obs_object_storage_rename_object_response_t;
如何在 plsql 包中将此代码正确转换为 运行? 关于如何以及在何处声明它们存在问题
谢谢
您只需要用包语法包装 PL/SQL 块吗?
create or replace package cloud_storage is
procedure rename_files;
end;
/
create or replace package body cloud_storage is
procedure rename_files is
namespace_name VARCHAR2(30) := 'XX';
bucket_name varchar2(100) := 'XX';
region VARCHAR2(30) := 'eu-frankfurt-1';
cred VARCHAR2(30) := 'OCIDI_CRED';
rename_values dbms_cloud_oci_object_storage_rename_object_details_t;
result dbms_cloud_oci_obs_object_storage_rename_object_response_t;
begin
-- set the object name and rename values
rename_values := dbms_cloud_oci_object_storage_rename_object_details_t(source_name => '1.txt',
new_name => '2.txt', -- CSV_Manual/1.txt for example to put in folder
src_obj_if_match_e_tag => NULL,
new_obj_if_match_e_tag => NULL,
new_obj_if_none_match_e_tag => NULL);
-- Execute the task and get a status code and the task run key
result := dbms_cloud_oci_obs_object_storage.rename_object(namespace_name => namespace_name,
bucket_name => bucket_name,
rename_object_details => rename_values,
opc_client_request_id => NULL,
region => region,
endpoint => NULL,
credential_name => cred);
dbms_output.put_line('status code: ' || result.status_code);
end;
end;
/
然后你可以调用包和过程:
begin
cloud_storage.rename_files;
end;
/