我需要安排从0600到1800的工作.工作应该每两个小时后运行一次.例如0800,1000,1200,1400,1600,1800.
这是我到目前为止设法完成的代码:
DECLARE
l_id binary_integer;
begin
sys.dbms_job.submit(job => l_id, what => 'integration_export;', interval => 'TRUNC(SYSDATE,''hh24'')+0/24/60');
sys.dbms_output.put_line(l_id);
end;
Run Code Online (Sandbox Code Playgroud)
当然,这将在每2小时后运行一次,而不是在1801 - 0759停止.我怎么能添加这个限制?我要做的一件事是创建另一个计划程序,该程序在1801处唤醒并在此时间点更改为此作业.但是,我想知道这是不是一个好主意.
有什么建议?
提前致谢 :-)
添加INDEX BY PLS_INTEGER和不在新表类型声明结束之间的差异是什么.看看这个例子:
DECLARE
GC_BULK_LIMIT CONSTANT INTEGER := 500;
CURSOR CUR_CLIENTS IS SELECT C.ID, C.NAME FROM CLIENTS C;
TYPE RT_CLIENTS IS TABLE OF CUR_CLIENTS%ROWTYPE;
-- TYPE RT_CLIENTS IS TABLE OF CUR_CLIENTS%ROWTYPE INDEX BY PLS_INTEGER;
LT_CLIENTS RT_CLIENTS;
BEGIN
OPEN CUR_CLIENTS;
LOOP
FETCH CUR_CLIENTS BULK COLLECT INTO LT_CLIENTS LIMIT GC_BULK_LIMIT;
EXIT WHEN LT_CLIENTS.COUNT = 0;
FOR I IN 1..LT_CLIENTS.COUNT LOOP
-- ... SOME LOGIC
END LOOP;
END LOOP;
CLOSE CUR_CLIENTS;
END;
Run Code Online (Sandbox Code Playgroud) 简而言之,我正在尝试按列进行分组,但仅当该列不是null或者0在这种情况下我仍然想要获取这些行,但只是没有分组.我有这张桌子some_table:
+--------+----------+---------------------+-------+
| id | other_id | date_value | value |
+--------+----------+---------------------+-------+
| 1 | abc | 2011-04-20 21:03:05 | 104 |
| 2 | abc | 2011-04-20 21:03:04 | 229 |
| 3 | xyz | 2011-04-20 21:03:03 | 130 |
| 4 | abc | 2011-04-20 21:02:09 | 97 |
| 5 | 0 | 2011-04-20 21:02:08 | 65 |
| 6 | xyz | 2011-04-20 21:02:07 | 101 |
| 7 …Run Code Online (Sandbox Code Playgroud) 我正在优化一些SQL查询(这可以被认为是我最近发布的问题的第2部分)并用NOT EXISTS谓词替换了一些NOT IN
我是否正确地认为这样做的主要好处是,使用NOT EXISTS可以获得声明在找到单个匹配时终止的好处,但是对于计数子查询而言,NOT IN将需要进行全表扫描?
如果选择的数据包含NULL,NOT IN似乎还需要额外的工作,这是正确的吗?
在我在proc中实现它们之前,我需要确保第二个语句比这两个案例中的第一个语句(和功能上等效的)更好:
情况1:
--exclude sessions that were tracked as part of a conversion during the last response_time minutes
-- AND session_id NOT IN (SELECT DISTINCT tracked_session_id
-- FROM data.conversions WITH (NOLOCK)
-- WHERE client_id = @client_id
-- AND utc_date_completed >= DATEADD(minute, (-2) * cy.response_time, @date)
-- AND utc_date_completed <= @date
-- AND utc_date_clicked <= @date)
AND NOT EXISTS (SELECT 1
FROM data.conversions WITH (NOLOCK)
WHERE client_id = @client_id
AND utc_date_completed >= DATEADD(minute, (-2) …Run Code Online (Sandbox Code Playgroud) 如果我DDMM在PL/SQL中有一个日期格式,我想验证它.这样做的正确方法是什么?
DD是一天,MM是飞蛾.
For an example:
0208 - is a valid date
3209 - is not a valid date
0113 - is not a valid date.
Run Code Online (Sandbox Code Playgroud) 我想要DDL表格,以便我可以使用UTLOracle中的Package 将它放到数据库服务器上.
问题是:当我们
select dbms_metadata.get_ddl('TABLE','Table_name','Schema_Name')
from dual;
Run Code Online (Sandbox Code Playgroud)
我得到一个包含CLOB之前的输出CREATE.喜欢
"(CLOB)
CREATE TABLE "SCHEMA"."TABLE_NAME"
(TABLE_COLUMNS.....) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "INTF_DATA01" ;"
Run Code Online (Sandbox Code Playgroud)
我要的是上面DDL没有CLOB,没有的参数,例如SEGMENT CREATION,PCTFREE...等等.
很高兴得到建议.
我想更改下划线分隔的字符串:
my_underscore_separated_string
Run Code Online (Sandbox Code Playgroud)
进入CamelCase:
MyUnderscoreSeparatedString
Run Code Online (Sandbox Code Playgroud)
使用SQL语句.执行此转换的最佳方法是什么(在Oracle的表中)?
我可以将下划线与REGEXP_REPLACE匹配,但是无法更改反向引用的情况.INSTR/SUBSTR操作只允许我一次转换一个下划线.
有人能告诉我这段代码有什么问题.我的目标是编写一个传递员工姓名的程序,将员工表中的所有姓名和工资加载到VARRAY中,然后在屏幕上打印出姓名和工资.
CREATE OR REPLACE PROCEDURE VARRAY_Q2
(
PNAME IN VARCHAR2
, PSAL OUT NUMBER
) AS
--declare and create cursor
CURSOR emp_cur IS
SELECT ename,sal
FROM EMP;
TYPE varray_emp IS VARRAY(14) OF emp_Cur%ROWTYPE;
--Creating new instance of varray
x_varray_emp varray_emp := varray_emp();
v_counter NUMBER := 0;
BEGIN
x_varray_emp.EXTEND;
FOR empRecs IN emp_Cur LOOP
--Insert data into the varray
x_varray_emp(v_counter) := empRecs;
dbms_output.put_line(v_counter);
v_counter := v_counter + 1;
END LOOP;
--Loop through the varray and print out all the elements
FOR …Run Code Online (Sandbox Code Playgroud) 我写下面FUNCTION检查给出的reference number是存在的.
FUNCTION find_reference_no(
p_ref_no IN VARCHAR2) RETURN VARCHAR2
AS
v_ref_no varchar2(50);
BEGIN
select REF_NO into v_ref_no from cash where REF_NO = p_ref_no;
EXCEPTION
WHEN no_data_found THEN
v_ref_no := '#';
RETURN v_ref_no;
END;
Run Code Online (Sandbox Code Playgroud)
我把这个函数叫做了AFTER INSERT TRIGGER.当我插入数据时,我得到了错误
ORA-06503: PL/SQL: Function returned without value
我怎么解决这个问题?
PS:我没有在cash表格中插入数据.我正在将数据插入另一个表(假设它是表B)并在其中调用此函数(表B)AFTER INSERT TRIGGER.
plsql ×10
oracle ×8
oracle11g ×4
sql ×2
camelcasing ×1
database ×1
date ×1
function ×1
group-by ×1
jobs ×1
optimization ×1
rdbms ×1
scheduling ×1
sql-server ×1
validation ×1