我们可以使用ALT + Page up/Down在工作表和脚本输出窗口之间导航,但我找不到任何快捷键来关闭它.
我主要是一个 Oracle 新手,所以请原谅我,如果这是一个愚蠢的问题......
我已经阅读了很多关于 authID 的文章,我的理解是 AUTHID 子句指示 Oracle 例程是使用调用者权限 (CURRENT_USER) 还是使用所有者权限 (DEFINER) 运行。如果未指定该子句,Oracle 将默认使用 AUTHID DEFINER。
您能给我一个简单的例子来更好地理解 authID 吗?
我正在阅读 Steven Feuerstein 的 PL/SQL 书。根据它:
当您想从异常处理程序中重新引发(或传播出去)相同的异常时,请使用此表单,如下所示:
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- Use common package to record all the "context" information,
-- such as error code, program name, etc.
errlog.putline (company_id_in);
-- And now propagate NO_DATA_FOUND unhandled to the enclosing block.
RAISE;
Run Code Online (Sandbox Code Playgroud)
当您想要记录发生错误的事实,然后将相同的错误传递给封闭块时,此功能很有用。这样,您可以记录应用程序中发生错误的位置,但仍会停止封闭块,而不会丢失错误信息。
我试一试:
create table log_error
(
error_code number,
error_name varchar2(400)
);
declare
l_q number := 400;
l_r number := 0;
l_result number;
err_num NUMBER;
err_msg VARCHAR2(100);
begin
l_result := l_q/l_r;
EXCEPTION
WHEN OTHERS THEN
err_num := SQLCODE;
err_msg …Run Code Online (Sandbox Code Playgroud) 这是包规范:
CREATE OR REPLACE PACKAGE employee_info
IS
PROCEDURE p;
FUNCTION f RETURN BOOLEAN;
END employee_info;
Run Code Online (Sandbox Code Playgroud)
这是包体:
CREATE OR REPLACE PACKAGE body employee_info
IS
PROCEDURE p IS
BEGIN
dbms_output.put_line('This is procedure');
dbms_output.put_line(chr(10));
END;
FUNCTION f RETURN BOOLEAN IS
BEGIN
dbms_output.put_line('This is function ');
dbms_output.put_line(chr(10));
RETURN true;
END;
BEGIN
dbms_output.put_line('This is the initialization section of package body');
END employee_info;
Run Code Online (Sandbox Code Playgroud)
我什么时候应该使用包的初始化部分?
如上例所示,当我第一次执行代码时,我只能看到package body的begin..end被执行,而其余的调用则不会执行.
我正在使用以下语句执行过程和函数:
execute employee_info.p;
declare
p1 boolean;
begin
p1 := employee_info.f;
end;
Run Code Online (Sandbox Code Playgroud) 我正在阅读专家 - oracle-database-architecture书.汤姆正在解释关于绑定变量的内容.
你能告诉我第一个程序和第二个程序有什么不同吗?根据我的理解,我们execute immediate用来执行动态SQL语句或匿名PL/SQL块.
这是目标表:
create table t ( x int );
Run Code Online (Sandbox Code Playgroud)
以下是过程#1的示例:
ops$tkyte%ORA11GR2> create or replace procedure proc_name1
2 as
3 begin
4 for i in 1 .. 10
5 loop
6 execute immediate
7 'insert into t values ( '||i||')';
8 end loop;
9 end;
10 /
Run Code Online (Sandbox Code Playgroud)
以下是过程#2的示例:
create or replace procedure proc_name2
as
begin
for i in 1 .. 10
loop
insert into t values ( i);
end loop;
end;
Run Code Online (Sandbox Code Playgroud) 我在一个包中创建了一个过程,该过程在表中进行插入/删除,并且在成功完成事务之后,提交完成.
像这样:
create or replace package pac is
procedure pr_test(emp_id number)
is
begin
-- some code
if something then
insert
else
delete
commit;
end pr_test;
end pac ;
Run Code Online (Sandbox Code Playgroud)
我应该将此交易作为AUTONOMOUS_TRANSACTION吗?在程序中放置这样的提交有什么影响?