当系统到达特定日期时,我怎么能有一个更新某个字段的触发器?
即
+---------------------+ +-------------+
| Trains | | Trips |
+---------------------+ +-------------+
| id | | id |
| distanceTraveled | | endDate |
| | | trainUsed |
| | | distance |
+---------------------+ +-------------+
Run Code Online (Sandbox Code Playgroud)
火车:
旅行:
执行:
2天的最终结果将是
火车:
可以在PL SQL中执行Drop.
这个SQL有什么问题
我试图放弃所有用户.问题出在drop user username cascase语句中
connect sys/abcsds@1.1.1.1 as sysdba
exec dbms_output.enable(1000000);
set serveroutput on
DECLARE
BEGIN
for rec in (select username from dba_users where username LIKE 'S%' AND username NOT LIKE 'SY%') loop
dbms_output.put_line(to_char(rec.username));
dbms_sql.execute('drop user rec.username cascade');
end loop;
END;
.
run;
exit;
Run Code Online (Sandbox Code Playgroud) 虽然试图创建一个使用PL/SQL我发现自己坚持了以下问题的报告,我创建了访问使用DB连接远程DB 2代表的SQL查询,单独运行查询本身返回预期的结果,但是当我运行相同的查询并将结果放入我得到的游标中
PL/SQL: ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)
错误.
我不确定它是否与我为每个表使用的别名有关,或者select语句可能试图选择本地表,我不知道,你有什么建议吗?
PL/SQL:
DECLARE
CURSOR t_bug_details IS (SELECT h.*
FROM table1@REMOTEDB h,
table2@REMOTEDB rml
WHERE h.product_id IN (123)
AND h.category IN ('category')
AND h.status < 4
AND h.status NOT IN (1,2,3)
AND h.release_status IN (upper('P'))
--AND h.programmer IN (upper('MRFOO'))
AND h.some_id = rml.some_id
and rownum <=400);
REPORT_DAY VARCHAR2(40);
mail_html clob;
mail_bod clob;
BEGIN
FOR v_some_details in t_bug_details
LOOP
REPORT_DAY := TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS');
DBMS_OUTPUT.PUT_LINE(REPORT_DAY || '|' ||
v_some_details.reptnom || '|' || …Run Code Online (Sandbox Code Playgroud) 我在oracle中有一个表,如下所示:
name | type | nullable
------------------------------------------
person_name | varchar(20) | yes
weight_coeficient | number | yes
...
Run Code Online (Sandbox Code Playgroud)
我如何计算weight_coeficient的值有多少位数?例如:
3.0123456789有11位数(精度 = 11)和小数点后10位数(刻度 = 10)
是否有任何sql命令/函数可以做到这一点,类似的东西GetPrecision( select.. )返回11?
另请注意,表的定义未指定比例和精度.据我所知,所有数字都应用了最大精度.所以我不想找出定义的精度(= 48),而是表中特定值的精度.这可能只是使用oracle命令吗?
谢谢你,
JP
我在工作中遇到了以下PL/SQL代码(变量已修改):
PROCEDURE test(i_w IN a.w%type,o_result IN OUT resu_cur_type) IS
BEGIN
IF i_w IS NULL THEN
open o_result for SELECT a.x, b.y FROM a,b WHERE a.z=b.z;
ELSE
open o_result for SELECT a.x, b.y FROM a,b WHERE a.z=b.z AND a.w=i_w;
END IF;
END test;
Run Code Online (Sandbox Code Playgroud)
我认为上述内容相当于以下内容:
PROCEDURE test(i_w IN a.w%type,o_result IN OUT resu_cur_type) IS
BEGIN
open o_result for SELECT a.x, b.y FROM a,b WHERE a.z=b.z AND NVL(a.w,1)=NVL(NVL(i_w,a.w),1);
END test;
Run Code Online (Sandbox Code Playgroud)
不一样吗?有人可以解释是否有任何理由使用原始版本?请注意,原始游标是一个50行查询,因此重构可能会提高其可读性并保持简单.
编辑:
为了解决Kevin Burton的答案中的问题,我更新了WHERE条件.
在我的一个项目中,我必须生成一个从1到2000的随机数并将它们存储到表中.我必须在表中存储2000个值.我必须在表中存储不同的值.锄头在oracle中这样做.我正在使用Oracle 11g.
create or replace aArr is TABLE of varchar2 index by binary_integer;
create or replace bArr is TABLE of varchar2 index by binary_integer;
create or replace prc(oname aArr, iname bArr) as
begin
--Now i have two arrays
-- i want to insert or update into table using these two arrays
-- How can i do that with out using the loops.
-- is there any bulk insert or update.
end
Run Code Online (Sandbox Code Playgroud)
现在我有两个数组.我想使用这两个数组插入或更新到表中.如何在不使用循环的情况下做到这一点?是否有批量插入或更新?
我在用户名'staff'的架构'staff'下有'stf_table'表.
我在'employee'架构下有'emp_table'表,用户名为'employee'.
这两个都在相同的数据库SID /主机/端口下,但用户'staff'没有查询架构'employee'下的表,反之亦然(即用户'employee'没有privelege查询表下架构'员工').但是每个用户都可以在自己的架构下查询表.注意:我无法授予额外的权限,我不想将两个表都转储到本地架构中.
是否可以编写一个PL/SQL proc或包来执行以下操作?
select count(*) from stf_table;
select count(*) from emp_table;
Run Code Online (Sandbox Code Playgroud)
然后将两个计数输出到一个文件(即.txt或.dat不关心),如下所示:
stf_table count: 47830
emp_table count: 36462
difference: 11368
counts match: FALSE
Run Code Online (Sandbox Code Playgroud) 我们已经在数据库中有一个序列,现在我必须修改该序列,以便从一个特定的值开始,我将从db中获取.我写了以下代码
DECLARE
i_Seq INTEGER;
BEGIN
SELECT MAX (col_id) + 1 INTO i_Seq from Table;
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQHDR MINVALUE '|i_Seq|' MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH '|i_Seq|' CACHE 20 NOORDER NOCYCLE'
END;
/
Run Code Online (Sandbox Code Playgroud)
我有以下问题.
场景:我对包不了解,除了它们包含的函数和程序都包含在一个漂亮的小礼物中.所以今天我得到了这个包(相当大)的说明"在这里,这是破碎的,请修理它".
我终于清理了一切,这让我想到了我的问题.
在包的整体视图中,将要导出.
1)除了所有东西的集合外,包装是否还有其他用途?
2)要部署此包,您是否需要将部署空间设置为已包含该包调用的所有视图/物化视图/表?如果不是,我假设包将无法执行.
3)您是否可以编写程序包以跳过无法执行而无法执行的函数和过程?
4)当把在一个地方成功编译的包裹带到另一个地方时,我应该注意哪些其他的东西?