Oracle 使用SQL开发人员执行SQL
我有一组SQL语句,我想执行它们来运行测试Oracle 使用SQL开发人员执行SQL,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,我有一组SQL语句,我想执行它们来运行测试 create table t2 (x varchar2 (1), y int, z date, constraint pk_t2 primary key (y, z) ); insert into t2 values ('a', 111, sysdate ); DBMS_OUTPUT.put_line('Time 1: '); -- Pause for 1 second. sys.DBMS_SESSION.sleep(1); insert into
create table t2 (x varchar2 (1), y int, z date, constraint pk_t2 primary key (y, z) );
insert into t2 values ('a', 111, sysdate );
DBMS_OUTPUT.put_line('Time 1: ');
-- Pause for 1 second.
sys.DBMS_SESSION.sleep(1);
insert into t2 values ('a', 111, sysdate );
DBMS_OUTPUT.put_line('Time 2: ');
-- Pause for 1 second.
sys.DBMS_SESSION.sleep(1);
insert into t2 values ('a', 111, sysdate );
DBMS_OUTPUT.put_line('Time 3: ' || TO_CHAR(SYSTIMESTAMP, 'HH24:MI:SS.FF'));
-- Pause for 1 second.
sys.DBMS_SESSION.sleep(1);
insert into t2 values ('a', 111, sysdate );
DBMS_OUTPUT.put_line('Final: ' || TO_CHAR(SYSTIMESTAMP, 'HH24:MI:SS.FF'));
drop table t2;
如果我在SQL Developer中选择这组语句并单击“运行”,则会出现如下错误:
Error starting at line : 8 in command -
sys.DBMS_SESSION.sleep(1)
Error report -
Unknown Command
我对如何在SQL Developer Studio中运行SQL命令有语法问题或基本误解吗?您不能在PL/SQL块之外运行PL/SQL代码(
DBMS\u输出。PUT\u行
和DBMS\u会话。睡眠
)。您需要将所有代码包装在开始
/结束
中,并将DML和insert语句作为立即执行
语句运行
BEGIN
EXECUTE IMMEDIATE 'create table t2 (x varchar2 (1), y int, z date, constraint pk_t2 primary key (y, z) )';
EXECUTE IMMEDIATE 'insert into t2 values (''a'', 111, sysdate )';
DBMS_OUTPUT.put_line ('Time 1: ' || TO_CHAR (SYSTIMESTAMP, 'HH24:MI:SS.FF'));
-- Pause for 1 second.
sys.DBMS_SESSION.sleep (1);
EXECUTE IMMEDIATE 'insert into t2 values (''a'', 111, sysdate )';
DBMS_OUTPUT.put_line ('Time 2: ' || TO_CHAR (SYSTIMESTAMP, 'HH24:MI:SS.FF'));
-- Pause for 1 second.
sys.DBMS_SESSION.sleep (1);
EXECUTE IMMEDIATE 'insert into t2 values (''a'', 111, sysdate )';
DBMS_OUTPUT.put_line ('Time 3: ' || TO_CHAR (SYSTIMESTAMP, 'HH24:MI:SS.FF'));
-- Pause for 1 second.
sys.DBMS_SESSION.sleep (1);
EXECUTE IMMEDIATE 'insert into t2 values (''a'', 111, sysdate )';
DBMS_OUTPUT.put_line ('Final: ' || TO_CHAR (SYSTIMESTAMP, 'HH24:MI:SS.FF'));
EXECUTE IMMEDIATE 'drop table t2';
END;
不能在PL/SQL块之外运行PL/SQL代码(
DBMS\u输出。PUT\u行
和DBMS\u会话。睡眠
)。您需要将所有代码包装在开始
/结束
中,并将DML和insert语句作为立即执行
语句运行
BEGIN
EXECUTE IMMEDIATE 'create table t2 (x varchar2 (1), y int, z date, constraint pk_t2 primary key (y, z) )';
EXECUTE IMMEDIATE 'insert into t2 values (''a'', 111, sysdate )';
DBMS_OUTPUT.put_line ('Time 1: ' || TO_CHAR (SYSTIMESTAMP, 'HH24:MI:SS.FF'));
-- Pause for 1 second.
sys.DBMS_SESSION.sleep (1);
EXECUTE IMMEDIATE 'insert into t2 values (''a'', 111, sysdate )';
DBMS_OUTPUT.put_line ('Time 2: ' || TO_CHAR (SYSTIMESTAMP, 'HH24:MI:SS.FF'));
-- Pause for 1 second.
sys.DBMS_SESSION.sleep (1);
EXECUTE IMMEDIATE 'insert into t2 values (''a'', 111, sysdate )';
DBMS_OUTPUT.put_line ('Time 3: ' || TO_CHAR (SYSTIMESTAMP, 'HH24:MI:SS.FF'));
-- Pause for 1 second.
sys.DBMS_SESSION.sleep (1);
EXECUTE IMMEDIATE 'insert into t2 values (''a'', 111, sysdate )';
DBMS_OUTPUT.put_line ('Final: ' || TO_CHAR (SYSTIMESTAMP, 'HH24:MI:SS.FF'));
EXECUTE IMMEDIATE 'drop table t2';
END;
要基于EJ的答案(将SQL放在PL/SQL块中),还可以使用匿名BEGIN.作为SQL脚本的一部分运行PL/SQL。。结束
块,或使用exec(sql*plus命令)
我喜欢exec
执行单行命令,匿名块执行大量代码。要基于EJ的答案(将SQL放入PL/SQL块中),还可以使用匿名BEGIN作为SQL脚本的一部分运行PL/SQL。。结束
块,或使用exec(sql*plus命令)
我喜欢exec
用于单行命令,而匿名块用于大量代码