标签: plsql

ORACLE中的睡眠功能

我需要在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功能?

sql oracle plsql oracle11g

30
推荐指数
6
解决办法
15万
查看次数

从PL/SQL中的日期减去天数

我想从sysdate中减去给定的x天数,有人可以帮助我如何做到这一点,我正在使用PL/SQL语言.谢谢!

sql oracle plsql

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

按字段创建分组索引?

您是否需要为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创建的索引.在任何其他字段上创建的其他单字段或复合索引将不会用于上述查询.这听起来不错吗?

sql oracle indexing plsql

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

检查plsql中的变量是否为null

我想检查一个变量是否为null.如果它为null,那么我想为该变量设置一个值:

//data type of var is  number 
if Var = null then
  var :=5;
endif
Run Code Online (Sandbox Code Playgroud)

但我发现错误.如何检查变量是否为空?

我正在使用oracle数据类型

sql oracle plsql

29
推荐指数
3
解决办法
12万
查看次数

应该何时使用数据库同义词?

我已经得到了语法,但我想知道是否有人可以提供一个说明性的用例,其中数据库同义词非常有用.

sql oracle database-design plsql synonym

29
推荐指数
3
解决办法
3万
查看次数

Oracle - 使用自动增量ID插入新行

我有一个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列的序列.感谢大家,我给大家竖起大拇指,今天我能够解决另一条龙,帮助病人护理向前迈出一步!"

sql oracle plsql oracle10g

29
推荐指数
3
解决办法
14万
查看次数

if(从表中选择count(列))> 0然后

我需要检查一下情况.即:

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)

oracle plsql

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

格式化清晰且可读的SQL查询

我正在编写一些带有多个子查询和大量连接的SQL查询,包括子查询内部和子查询中的结果表.

我们没有使用视图,所以这是不可能的.

在写完之后我正在看着它并且挠头想知道它甚至在做什么,因为我无法遵循它.

你用什么样的格式来试图清理这么乱?也许缩进?

sql plsql code-cleanup

28
推荐指数
2
解决办法
5517
查看次数

pls_integer和binary_integer有什么区别?

我继承了一些代码,这些代码将成为一些额外工作的基础.看看存储过程,我看到了很多关联数组.

其中一些由binary_integers索引,一些由pls_integers索引.这两者有什么不同吗?

我查看了文档,但除此之外:

PL/SQL数据类型PLS_INTEGERBINARY_INTEGER相同.为简单起见,本文档使用PLS_INTEGER来表示PLS_INTEGERBINARY_INTEGER.

我发现两者之间没有任何区别.那有什么区别?是否出于历史/兼容性原因?

我正在使用Oracle 10gR2

oracle plsql associative-array oracle10g

27
推荐指数
3
解决办法
7万
查看次数

Oracle PLS-00363:表达式''不能用作赋值目标

你好,不知道为什么我得到这个错误.基本上我在这三行中得到它:

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)

sql oracle plsql

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