标签: plsql

Oracle PL/SQL 上 VARCHAR2 和 LONG 数据类型的区别

我们使用 VARCHAR2 数据类型来存储可变长度字符数据。VARCHAR2 数据类型采用必需的参数,指定最大大小为 32767 字节。

我们使用 LONG 数据类型来存储可变长度的字符串。LONG 数据类型类似于 VARCHAR2 数据类型,不同之处在于 LONG 值的最大大小为 32760 字节。

除了最大尺寸之外还有其他区别吗?

oracle types plsql

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

在 PL/SQL 块中定义引用其自身集合的记录类型

如何在 PL/SQL 匿名块中定义包含自身集合属性的记录类型?看下面的例子:

DECLARE
    type t_item is record (
        name varchar2(64),
        children t_items              -- referencing t_items type
    );
    type t_items is table of t_item;  -- referencing t_item type

BEGIN
    -- script code
END
Run Code Online (Sandbox Code Playgroud)

PL/SQL 没有类型提升,因此 Oracle 引擎会引发异常:

PLS-00498:在声明之前非法使用类型

如何定义属性中t_item包含 a 的记录?table of t_itemchildren

oracle plsql forward-declaration hoisting

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

在 Oracle 中开始事务 - 在自动提交中回滚

我将从 SQL Server 迁移到 Oracle。我发现的一件事是,Oracle 自动提交默认是禁用的。我的问题是,当自动提交打开时,我们如何回滚事务?在SQL Server中,有这样的Begin tran语句,那么Oracle呢?

oracle plsql transactions oracle11g

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

Oracle测量存储过程的执行时间

我想测量Oracle中存储过程的执行时间。我已经了解了在开始和结束时在临时日志记录表中写入条目的技术,但无法使用此技术。

您能给我推荐一个开源/免费工具吗?我可以使用它来执行此操作?

谢谢!

sql oracle plsql stored-procedures sqlplus

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

Oracle“pl/sql”集合是按值分配还是按引用分配?

我有一个集合,需要将此集合复制到另一个集合。

例如:

TYPE my_table_type IS TABLE OF some_object;

procedure test(p_table IN my_table_type) is
  internal_table my_table_type;
begin
  internal_table := p_table;

  internal_table.extend;
  .... 
end;
Run Code Online (Sandbox Code Playgroud)

这是按引用赋值还是按值赋值?

这是复制嵌套表的正确方法吗?

我努力了。看起来效果很好。但我在 Oracle 文档中找不到任何参考。

oracle plsql

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

PL/SQL 简单选择记录变量

我已经声明了一个记录变量:

Declare
TYPE WORK_REC IS RECORD(
STRING1  VARCHAR (21),  
NUMBER1  NUMBER  (05)
);
TARGET_REC WORK_REC;
...
Run Code Online (Sandbox Code Playgroud)

在某个时刻,我得到两个值,我必须将它们移至记录变量中。是否可以像这样使用单个 SELECT INTO ?

SELECT (<PROPER STRING VALUE> , <PROPER NUMBER VALUE> ) INTO TARGET_REC 
Run Code Online (Sandbox Code Playgroud)

这里的重点是我想以一种简单的维护方式来填写我的记录。

sql select plsql record data-structures

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

如何在pl/sql中将.dmp文件转换为.sql文件

我无法将 .dmp 文件转换为 .sql。

Database username=chartindia
Database password=gaurav12
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码:

exp chartindia file=D:\\chartindia2020.dmp
Run Code Online (Sandbox Code Playgroud)

我是 pl/sql 新手。

oracle plsql sqlplus

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

如何使用普通游标中的值打开 sys_refcursor?

sys_refcursor我可以从普通游标打开带有值的值吗?

create or replace procedure test(C1 out sys_refcursor)
  Lv_c1 as
    Select * from table;
Begin
  Open C1 for select * from lv_c1;
End;
Run Code Online (Sandbox Code Playgroud)

oracle plsql cursor

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

如何使用 oracle 函数返回 SELECT 查询?

我需要创建一个函数,该函数允许我返回与 SELECT 查询相同的结果,并且包含 pl/sql 代码。

我尝试了一些非常简单的事情:

create or replace FUNCTION test
  RETURN SYS_REFCURSOR
IS
  l_rc SYS_REFCURSOR;
BEGIN
  OPEN l_rc
   FOR SELECT *
         FROM my_table;
  RETURN l_rc;
END;
Run Code Online (Sandbox Code Playgroud)

但是,当我使用 调用函数时,我从单个单元格中SELECT test from dual;获取所有结果,而不是将每列分开。my_table

有办法做我想做的事吗?

理想情况下,我想要一个视图,但似乎无法添加逻辑条件。

sql oracle plsql

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

PL/SQL 过程如何判断它是否是从并发程序运行的?

我想编写一个过程,该过程在从并发程序运行时将输出记录到 Oracle 并发管理器日志,但在“独立”运行时写入 dbms_output。

PL/SQL 有没有办法检查我的代码是否正在从并发请求运行?我能找到的最好的方法是

select * from fnd_concurrent_requests
where oracle_session_id = userenv('SESSIONID');
Run Code Online (Sandbox Code Playgroud)

但这是相当慢的。是否有可以查询的函数或表可以更有效地为我提供信息?

oracle plsql oracle-apps

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