标签: plsql

在 pl/sql 中使用不同的 Windows 帐户

是否可以在 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)

oracle windows plsql

1
推荐指数
1
解决办法
590
查看次数

ORM 风格的服务器端编程语言(PL/SQL 的 OO 替代品?)

晚上好,

是否有面向对象的 PL/SQL 替代品,允许编写服务器端过程[然后称为客户端或服务器端]?

(适用于 MySQL、PostgreSQL、Oracle 等)

stored-procedures plsql scripting procedure-definition

1
推荐指数
1
解决办法
459
查看次数

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)

trigger oracle plsql

1
推荐指数
1
解决办法
1801
查看次数

允许用户编译/运行 PLSQL 和 SQL

作为 DBA - 假设我的用户熟悉 PLSQL 和 SQL - 为什么我授予我的用户编译和运行他们自己的 PLSQL 代码的权限。我们有一个 MI 数据库环境,其中数据经过了 ETL。这些表包含大量行,但行的大小不一定很大。分析 - 将是 - 我假设自然界中的微积分。用户希望在数据上运行他们自己的代码以进行临时分析——在他们自己的模式中。他们来自 SAS 背景,据我所知,这使他们能够编写和运行自己的数据分析。尽管如此,SAS 运行在它自己的数据集上——从 Oracle 或其他地方提取。

在我看来,这是一个危险的设置——但没有回答我自己的问题——有什么陷阱?

oracle plsql

0
推荐指数
1
解决办法
233
查看次数

如何在 Oracle PL/SQL 中将保留字声明为变量?

绕过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)

oracle plsql

0
推荐指数
1
解决办法
1103
查看次数

当我尝试在 PL/SQL 过程中创建表时,为什么会收到 PLS-00103?

我收到此错误:

[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 plsql ddl

0
推荐指数
1
解决办法
1万
查看次数

为什么 DBMS_METADATA.GET_DLL 不能与 EXEC 命令一起使用?

使用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)

已经查看了手册并没有找到答案。

oracle plsql

-2
推荐指数
1
解决办法
1122
查看次数