我需要在ORACLE中执行SQL查询需要一定的时间.所以我写了这个函数:
CREATE OR REPLACE FUNCTION MYSCHEMA.TEST_SLEEP
(
TIME_ IN NUMBER
)
RETURN INTEGER IS
BEGIN
DBMS_LOCK.sleep(seconds => TIME_);
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RAISE;
RETURN 1;
END TEST_SLEEP;
Run Code Online (Sandbox Code Playgroud)
我以这种方式打电话
SELECT TEST_SLEEP(10.5) FROM DUAL
Run Code Online (Sandbox Code Playgroud)
但要工作,我需要设置授予DBMS_LOCK程序的所有者.
如何在不使用该功能的情况下重写此DBMS_LOCK.sleep功能?
我想从sysdate中减去给定的x天数,有人可以帮助我如何做到这一点,我正在使用PL/SQL语言.谢谢!
您是否需要为Oracle数据库中的分组字段创建索引?
例如:
select *
from some_table
where field_one is not null and field_two = ?
group by field_three, field_four, field_five
Run Code Online (Sandbox Code Playgroud)
我正在测试我为上面创建的索引,此查询的唯一相关索引是为field_two创建的索引.在任何其他字段上创建的其他单字段或复合索引将不会用于上述查询.这听起来不错吗?
我想检查一个变量是否为null.如果它为null,那么我想为该变量设置一个值:
//data type of var is number
if Var = null then
var :=5;
endif
Run Code Online (Sandbox Code Playgroud)
但我发现错误.如何检查变量是否为空?
我正在使用oracle数据类型
我已经得到了语法,但我想知道是否有人可以提供一个说明性的用例,其中数据库同义词非常有用.
我有一个workqueue表,其中包含一个workid列.workID列具有自动递增的值.有没有办法在后端运行查询以插入新行并自动增加workID列?
当我尝试插入null时,它会抛出错误ORA01400 - 无法将null插入workid.
insert into WORKQUEUE (facilitycode,workaction,description) values ('J', 'II', 'TESTVALUES')
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试了什么 - 我试着查看表格细节,但没有看到任何自动增量.表脚本如下
"WORKID" NUMBER NOT NULL ENABLE,
Run Code Online (Sandbox Code Playgroud)
数据库:Oracle 10g
一些现有数据的屏幕截图.

回答:
我要感谢每个人和每个人的帮助.今天是一次很棒的学习经历,没有你的支持,我无法做到.最重要的是,我试图在已经有序列和触发器的表中插入一行.我所要做的就是为我的问题找到正确的序列,并将该序列调用到我的查询中.
您提供给我的链接帮助我查看了这些序列,并找到了适用于此workid列的序列.感谢大家,我给大家竖起大拇指,今天我能够解决另一条龙,帮助病人护理向前迈出一步!"
我需要检查一下情况.即:
if (condition)> 0 then
update table
else do not update
end if
Run Code Online (Sandbox Code Playgroud)
我是否需要使用select into将结果存储到变量中?
例如:
declare valucount integer
begin
select count(column) into valuecount from table
end
if valuecount > o then
update table
else do
not update
Run Code Online (Sandbox Code Playgroud) 我正在编写一些带有多个子查询和大量连接的SQL查询,包括子查询内部和子查询中的结果表.
我们没有使用视图,所以这是不可能的.
在写完之后我正在看着它并且挠头想知道它甚至在做什么,因为我无法遵循它.
你用什么样的格式来试图清理这么乱?也许缩进?
我继承了一些代码,这些代码将成为一些额外工作的基础.看看存储过程,我看到了很多关联数组.
其中一些由binary_integers索引,一些由pls_integers索引.这两者有什么不同吗?
我查看了文档,但除此之外:
PL/SQL数据类型
PLS_INTEGER和BINARY_INTEGER相同.为简单起见,本文档使用PLS_INTEGER来表示PLS_INTEGER和BINARY_INTEGER.
我发现两者之间没有任何区别.那有什么区别?是否出于历史/兼容性原因?
我正在使用Oracle 10gR2
你好,不知道为什么我得到这个错误.基本上我在这三行中得到它:
PLS-00363: expression 'p_temp_foo.editable.modified_by' cannot be used as an assignment target
PLS-00363: expression 'p_temp_foo.editable.date' cannot be used as an assignment target
PLS-00363: expression 'p_temp_foo.editable.modified_by' cannot be used as an assignment target
Run Code Online (Sandbox Code Playgroud)
程序:
PROCEDURE run_temp_procedure (p_temp_foo IN part_bean, p_member_number IN NUMBER)
IS
t_temp_foo part_bean;
now DATE;
BEGIN
now := SYSDATE;
p_temp_foo.editable:= t_temp_foo.editable;
p_temp_foo.editable.date := SYSDATE;
p_temp_foo.editable.modified_by := p_member_number;
END run_temp_procedure ;
Run Code Online (Sandbox Code Playgroud)