标签: plsql

PL/SQL否定"成员"集合并不否定

我有一个包含空元素的PL/SQL集合(在最小的工作示例中它只是那个,但行为与其他元素相同).当我现在查询此集合是否具有特定数字作为元素时,它将false按预期返回.但事实是,否定查询也会产生答案false.

任何人都可以证实这种行为或指导我在这里失败的假设吗?

DECLARE
  TYPE number_t IS TABLE OF NUMBER;
  nt1 number_t := number_t();
BEGIN
  nt1.extend();
  dbms_output.put_line('Start');        -- prints 'Start'
  IF 1 member of nt1 THEN
    dbms_output.put_line('Member');     -- does not execute
  END IF;
  IF not 1 member of nt1 THEN
    dbms_output.put_line('Not member'); -- does not execute
  END IF;
  IF not (1 member of nt1) THEN
    dbms_output.put_line('Not member'); -- does not execute
  END IF;
END;
Run Code Online (Sandbox Code Playgroud)

观察:Oracle数据库11g企业版11.2.0.4.0版 - 64位

尚未在其他安装上测试过.

oracle plsql oracle11g

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

使用不同远程数据库上的包创建oracle pl/sql包

是否可以使用来自不同数据库的包创建包或替换本地数据库中的现有包,而无需从远程数据库中导出它?

基本上我有两个环境/服务器(DEV和QA).

在包上工作的开发人员使用开发环境,我想使用DEV中的包更新QA环境中的相同包(暂时忽略任何可能的问题,例如编译失败等).

是否可以使用Dev中的包作为源来频繁更新QA中的包(而不是从.sql文件编译)?也许数据库链接?

sql oracle plsql oracle11g

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

ROWID作为PL/SQL中的参数

我正在尝试创建一个帮助器存储过程来保存重复的代码.

我编写了以下存储过程,它接受表名,status_id和ROWID.

PROCEDURE sp_update_stage_status(p_table_name IN VARCHAR2,
                                 p_status_id IN NUMBER,
                                 p_rowid IN ROWID)
AS
BEGIN       
  execute immediate 'UPDATE ' || p_table_name
                 || ' SET STATUS_ID = ' || p_status_id 
                 || ' WHERE ROWID = ' || p_rowid;       
END;
Run Code Online (Sandbox Code Playgroud)

但是每当我执行它时,我得到以下内容.

ORA-00904: "AAATQEAAEAAAAHEAAB": invalid identifier
ORA-06512: at "OBR_DEV.PKG_COMMON", line 32
ORA-06512: at "OBR_DEV.PKG_DIRECTORY", line 449
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

oracle plsql stored-procedures rowid ora-00904

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

在oracle中通过引用传递什么?

我在网上看到,发现程序中的IN参数是通过引用传递的.你能用一个例子解释一下吗?提前致谢.

plsql

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

这些PL/SQL变量初始化是否相同?

所以我知道我可以使用以下任一方法在PL/SQL中初始化变量:

  • 该DEFAULT关键字
  • 该:=赋值运算符

例如:

  • counter binary_integer DEFAULT 15;
  • counter binary_integer := 15;

这两种方法是否完全等同于PL/SQL引擎,还是有任何细微的差别?

oracle plsql default-value variable-assignment

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

如何在PL SQL中创建日期开始和结束日期

我要做的是创建两个时间戳,一个StartDate时间戳将是09/08/2015 00:00:00一个EndDate时间戳,它应该09/08/2015 23:59:59像在MS SQL中一样容易实现,我无法找到一个Make_Date函数或Add_Days函数来获取其中任何一个Oracle PL SQL中的时间戳.

谁能帮我吗?

sql oracle plsql

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

PL / SQL中的重载问题

伙计们,我正在尝试在Oracle 11gR2的程序包中重载函数。函数是这样的。

Function is_h2h(p_param in number) return boolean
is
 begin
 --some code here
return true;
end; 
Run Code Online (Sandbox Code Playgroud)


Function is_h2h(p_param in number) return number
is
 begin
 --some code here
return 1;
end;
Run Code Online (Sandbox Code Playgroud)

所以问题是if,例如当我在另一个过程中编写语句 时

if is_h2h(some_param) then --code goes 
end if;
Run Code Online (Sandbox Code Playgroud)

编译器返回PLS-00307: Too many declarations of 'IS_H2H' match this call。
那么如何实现这种重载呢?

oracle plsql overloading

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

plsql包中的规范-为什么需要

有人可以告诉我,为什么在Oracle PL / SQL中需要打包Spec。无论如何,包装体都有所有的规格信息。

oracle plsql

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

PL / SQL VARRAY的最大大小

我试图找出PL / SQL中VARRAY 的可能上限。

我们肯定可以将VARRAY类型定义为

TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) 
   OF element_type [NOT NULL];
Run Code Online (Sandbox Code Playgroud)

Oracle文档中这样说:

每个varray都存储为单个对象,可以在其表的内部是一列(如果varray小于4KB),也可以在表的外部,但仍存储在同一表空间中(如果varray大于4KB)。您必须同时更新或检索varray的所有元素,这在一次对所有元素执行某些操作时最合适。但是您可能会发现以这种方式存储和检索大量元素是不切实际的。

但是size_limit参数的上限是多少?它等于无符号整数(4,294,967,295)吗?

oracle size plsql database-administration varray

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

从Oracle 11g中的给定URL下载文件并将其保存到blob类型列的过程

我遇到了问题.我需要在Oracle 11g中创建一个过程,该过程将从给定行获取URL并从该URL下载文件并将其保存在blob类型列中.你能告诉我我的方法应该是什么来达到这个目的吗?

database oracle plsql stored-procedures oracle11g

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