我正在尝试编写Powershell脚本来帮助完成多个数据库中的某些用户维护任务。
在这里,本质上是我想用伪代码完成的工作,但是我对PL / SQL包和过程(尤其是Powershell方面)没有太多经验。
是否可以从Powershell执行wwsec_api.set_defaultgroup过程?
SELECT userID FROM Database2.users
while (userID){
SELECT employeeType FROM Database1.users WHERE Database2.users.userID = Database1.users.userID
If employeeType = 'Employee' then
run Database2 PL/SQL package procedure wwsec_api.set_defaultgroup(ID, USER)
end if
}
最佳答案
我很想在这里不使用PowerShell。相反,我将使用database link。数据库链接会将Database2连接到Database1,并允许我将数据从Database1提取到Database2。
您使用类似的方法创建数据库链接
CREATE DATABASE LINK Database1 CONNECT TO user IDENTIFIED BY password USING 'database1_tns_name';
在Database2的
user
文件中,将password
和database1_tns_name
替换为Database1上模式所有者的用户名和密码,并用数据库1的TNS名称替换tnsnames.ora
。 (如果Database1的tnsnames.ora
文件中尚不存在,则可能需要为Database1创建一个条目。)然后,我将在Database2上运行一个类似于以下内容的PL / SQL块:
DECLARE
v_employeeType users.employeeType@Database1%TYPE;
BEGIN
FOR user_rec IN (SELECT userID FROM users)
LOOP
SELECT employeeType INTO v_employeeType
FROM users@Database1
WHERE userID = user_rec.userID;
IF v_employeeType = 'Employee' THEN
-- Check the parameters of this procedure - where does ID come from,
-- and do you really want to use the built-in function USER, which
-- returns the name of the currently-connected user?
wwsec_api.set_defaultgroup(ID, USER);
END IF;
END LOOP;
END;
关于oracle - 如何从Powershell执行PL/SQL包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5517043/