某些PL / SQL过程需要花费大量时间进行评估(因为重新计算和更新了大量数据)。
我想将执行此过程的执行上下文数量限制为单个。
如果执行其他上下文,则什么也不做...
但是我不知道在PL / SQL代码中使用哪些原子操作。
注意:恐怕如果服务器在过程评估的中间暂停时,使用表行进行同步会导致DB中的状态不一致...
我有表EMPLOYEE(idEmp,Name,lastName,Adress),我希望以每次有人插入新员工的方式阻止此表,这个新ID必须连续到最后一个员工的ID ...
- >实际上,可能有几个人试图在同一时间插入新员工,这就是为什么我需要锁定表...这些是替代方案:
在行共享模式下锁定表EMPLOYEE.
锁定表EMPLOYEE在行独占模式下.
在共享模式下锁定表EMPLOYEE.
锁定表EMPLOYEE在共享行中独占.
锁定表EMPLOYEE处于独占模式.
我可以选择不止一个.
我想从此查询数据中删除多个半冒号.我使用修剪,但它不完整.
;ghulam.nabi@yahoo.com.pk;NOCBSS@yahoo.com.pk;;;fo.n2@yahoo.com.pk;;mumtaz.akhta@yahoo.com.pk
Run Code Online (Sandbox Code Playgroud) 我正在创建一个名为'integer_properties'的inetegers表,从1到1000,表列是:
integer,isPrime,isOdd,isEven,digitCount;
Run Code Online (Sandbox Code Playgroud)
我想使用for循环插入记录我尝试过但错误说:'缺少SELECT关键字'
BEGIN
for k in 1..1000
loop
insert into integer_properties(integer,
isPrime,
isEven,
isOdd,
digitCount)
values(k,null,null,null,null);
end loop;
END;
Run Code Online (Sandbox Code Playgroud)
使用DDL命令输入1000个数字而不使用PL/SQL块是很繁琐的.我试图在整数列中输入循环变量值.有可能吗?
我有一个执行计算的Oracle函数,但没有返回结果的小数.
CREATE OR REPLACE Function MY_TESTE
RETURN DECIMAL
IS
BEGIN
RETURN 1/3;
END;
Run Code Online (Sandbox Code Playgroud)
如果我执行了这个功能
SELECT MY_TESTE
FROM DUAL
Run Code Online (Sandbox Code Playgroud)
它返回值0和任何小数位.但它预计会返回0.3333任何想法?
如果模式看起来如此,如何在PL/SQL中拆分字符串以获取最后一个值?:
'1; 2',在这种情况下,我想要的值是2.
注意:拆分器是字符';' 和值的长度不同,如'1; 2或123; 45678等...'
提前致谢!
我正在编写一些oracle存储过程,其中我们有条件逻辑,它影响我们正在使用哪个模式,我不知道如何在sql中为存储过程执行此操作.如果我正在使用预处理语句,那么它很好,但在我只是执行查询以填充另一个变量的情况下,我不知道如何做到这一点.例如
PROCEDURE register (
incustomer_ref in VARCHAR2,
incustomer_type in VARCHAR2,
outreturn_code out VARCHAR2
)
IS
customer_schema varchar2(30);
record_exists number(1);
BEGIN
if incustomer_type='a' then
customer_schema:='schemaA';
elsif incustomer_type='b' then
customer_schema:='schemaB';
end if;
--This type of command I cant get to work
select count(*) into record_exists from **customer_schema**.customer_registration where customer_ref=incustomer_ref
--but a statement like this i know how to do
if record_exists = 0 then
execute immediate 'insert into '||customer_schema||'.customer_registration
values ('||incustomer_ref||','Y',sysdate)';
end if;
Run Code Online (Sandbox Code Playgroud)
谁能照亮我在这里失踪的东西.
干杯
我想在Oracle对象类型中设置默认值,但是它需要为此在构造函数中传递所有属性。
无论如何,有没有,所以我只能在需要默认值的构造函数中传递必需的属性。
请查看以下详细信息
SQL> CREATE TYPE TYPE_SUB AS OBJECT(
2 COL1 NUMBER,
3个COL2 VARCHAR2(100)
4)
5非决赛
6 /
类型已创建。
SQL>创建或替换类型TYPE_MAIN
2 UNDER TYPE_SUB
3(
4个COL3 varchar2(10),
5个COL4 VARCHAR2(10),
6 CONSTRUCTOR FUNCTION TYPE_MAIN(COL1 NUMBER,COL2 VARCHAR2,COL3 varchar2,COL4 VARCHAR2)作为结果返回
7非决赛
8 /
类型已创建。
SQL>创建或替换类型主体TYPE_MAIN IS
2构造函数函数_MAIN(COL1编号,COL2 VARCHAR2,COL3 varchar2,COL4 VARCHAR2)按结果返回自
3开始
4 SELF.COL1:= nvl(COL1,123);
5 SELF.COL2:= nvl(COL2,'NA');
6 SELF.COL3:= nvl(COL3,'NA');
7 SELF.COL4:= nvl(COL4,NULL);
8 RETURN;
9结束;
10 END;
11 /
输入创建的正文。
SQL>创建表TAB_MAIN(
2个PKEY NUMBER,
3 COLTEST VARCHAR2(100),
4个COLNEW TYPE_MAIN)
5 /
表已创建。
SQL>插入TAB_MAIN(PKEY)值(1)
2 … 我在包中有2个程序.我正在调用一个过程来获取逗号分隔的用户ID列表.
我将结果存储在VARCHAR变量中.现在当我使用这个以逗号分隔的列表放入其中的一个IN子句时抛出" ORA-01722:INVALID NUMBER"异常.
这就是我的变量的样子
l_userIds VARCHAR2(4000) := null;
Run Code Online (Sandbox Code Playgroud)
这是我分配值的地方
l_userIds := getUserIds(deptId); -- this returns a comma separated list
Run Code Online (Sandbox Code Playgroud)
我的第二个问题是 -
select * from users_Table where user_id in (l_userIds);
Run Code Online (Sandbox Code Playgroud)
如果我运行此查询,我会收到INVALID NUMBER错误.
有人可以在这帮忙.
我想在oracle 9i中使用Jason Bennet的PL/SQL ExcelDocumentType代码.(http://www.jasonsdevelopercorner.com/?page_id=8)
目前我无法编译它,因为它使用REGEXP_REPLACE的不是oracle 9i.
任何人都可以为以下内容建议Oracle 9i替换表达式....
(LENGTH(REGEXP_REPLACE(p_header_string,'[^'||p_delimiter||']','')))+1;
Run Code Online (Sandbox Code Playgroud)
谢谢