是否可以在 pl/sql 中使用/登录不同的帐户。例如,我想写入只有特定帐户有权访问的文件夹中的文件。这是我的意思的一个例子:
Other code...
LOG_IN_OTHER_USER('SPECIALUSER', 'SECRETPASSWORD');
UTL_FILE.PUT_LINE(OutputFile,the_outfile);
UTL_FILE.FFLUSH(OutputFile);
LOG_OFF_OTHER_USER('SPECIALUSER');
Other code...
Run Code Online (Sandbox Code Playgroud) 晚上好,
是否有面向对象的 PL/SQL 替代品,允许编写服务器端过程[然后称为客户端或服务器端]?
(适用于 MySQL、PostgreSQL、Oracle 等)
我有以下完美运行的 DML 语句,我试图将它变成触发器,但它不起作用。
DML 语句
UPDATE HOLIDAY_RESERVATION R SET SUBTOTAL =
NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.IN_FLIGHT_ID), 0) * NVL(R.IN_FLIGHT_SEATS_NO,0) +
NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.OUT_FLIGHT_ID), 0)* NVL(R.OUT_FLIGHT_SEATS_NO,0) +
NVL((SELECT AC.ACC_PRICEPN FROM ACCOMMODATION AC WHERE AC.ACC_ID = R.ACC_ID), 0);
Run Code Online (Sandbox Code Playgroud)
触发语句
CREATE OR REPLACE TRIGGER HR_SUBTOTAL
BEFORE INSERT OR UPDATE ON HOLIDAY_RESERVATION
FOR EACH ROW
BEGIN
SELECT
NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = :NEW.IN_FLIGHT_ID), 0) * NVL(R.IN_FLIGHT_SEATS_NO,0) +
NVL((SELECT F.FLI_PRICE FROM FLIGHT …Run Code Online (Sandbox Code Playgroud) 作为 DBA - 假设我的用户熟悉 PLSQL 和 SQL - 为什么我不授予我的用户编译和运行他们自己的 PLSQL 代码的权限。我们有一个 MI 数据库环境,其中数据经过了 ETL。这些表包含大量行,但行的大小不一定很大。分析 - 将是 - 我假设自然界中的微积分。用户希望在数据上运行他们自己的代码以进行临时分析——在他们自己的模式中。他们来自 SAS 背景,据我所知,这使他们能够编写和运行自己的数据分析。尽管如此,SAS 运行在它自己的数据集上——从 Oracle 或其他地方提取。
在我看来,这是一个危险的设置——但没有回答我自己的问题——有什么陷阱?
绕过PL/SQL 值声明的Oracle SQL 保留字约束的最佳方法是什么?我意识到绑定和替换可能是实际查询的可接受替代方案,但是 Oracle PL/SQL 呢?例如,我想将一个数字变量声明为“num”,在 Oracle PL 查询中的结构如下:
SET SERVEROUTPUT ON
declare
num number;
begin
num := 10;
DBMS_OUTPUT.put_line('The value of num ' || num);
end;
Run Code Online (Sandbox Code Playgroud) 我收到此错误:
[Error] PLS-00103 (23: 9): PLS-00103: Encountered the symbol "CREATE" when expecting one of the following:
begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
尝试运行此代码时。我在这里做错了什么?
我应该使用批量收集吗?如果是这样,如何?
CREATE OR REPLACE PROCEDURE P_CLEAN_LICENSEE_ARCHIVE AS
BEGIN
/*******************************************************************/
/* This is an array of IDs for licensees */
/*******************************************************************/
array_l := l_arr(1026679, 1026714, 1036991, 1026735, 1026715, 1159363, 1026703, 1169002, 1052762, 1070152, 1026684,
1026685, 1164376, 1026693, 1026733, 1026698, 1026701, 1026680, 1026708, 1026710, 1026688, 1026697, …Run Code Online (Sandbox Code Playgroud) 使用Oracle 11g
我只是想理解这里的概念......
为什么下面的命令不起作用?(在 SQL Developer 中执行)
execute dbms_metadata.get_ddl('VIEW', 'VW_CARGA','INT')
Error starting at line : 7 in command -
execute dbms_metadata.get_ddl('VIEW', 'VW_CARGA','INT')
Error report -
ORA-06550: line 1, column 7:
PLS-00221: 'GET_DDL' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Run Code Online (Sandbox Code Playgroud)
我必须跑
select dbms_metadata.get_ddl('VIEW', 'VW_CARGA','INT') from dual ;
Run Code Online (Sandbox Code Playgroud)
已经查看了手册并没有找到答案。