我们使用 VARCHAR2 数据类型来存储可变长度字符数据。VARCHAR2 数据类型采用必需的参数,指定最大大小为 32767 字节。
我们使用 LONG 数据类型来存储可变长度的字符串。LONG 数据类型类似于 VARCHAR2 数据类型,不同之处在于 LONG 值的最大大小为 32760 字节。
除了最大尺寸之外还有其他区别吗?
如何在 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
我将从 SQL Server 迁移到 Oracle。我发现的一件事是,Oracle 自动提交默认是禁用的。我的问题是,当自动提交打开时,我们如何回滚事务?在SQL Server中,有这样的Begin tran语句,那么Oracle呢?
我想测量Oracle中存储过程的执行时间。我已经了解了在开始和结束时在临时日志记录表中写入条目的技术,但无法使用此技术。
您能给我推荐一个开源/免费工具吗?我可以使用它来执行此操作?
谢谢!
我有一个集合,需要将此集合复制到另一个集合。
例如:
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 文档中找不到任何参考。
我已经声明了一个记录变量:
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)
这里的重点是我想以一种简单的维护方式来填写我的记录。
我无法将 .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 新手。
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) 我需要创建一个函数,该函数允许我返回与 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
有办法做我想做的事吗?
理想情况下,我想要一个视图,但似乎无法添加逻辑条件。
我想编写一个过程,该过程在从并发程序运行时将输出记录到 Oracle 并发管理器日志,但在“独立”运行时写入 dbms_output。
PL/SQL 有没有办法检查我的代码是否正在从并发请求运行?我能找到的最好的方法是
select * from fnd_concurrent_requests
where oracle_session_id = userenv('SESSIONID');
Run Code Online (Sandbox Code Playgroud)
但这是相当慢的。是否有可以查询的函数或表可以更有效地为我提供信息?