Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 使用SQL开发人员执行SQL_Oracle_Oracle Sqldeveloper - Fatal编程技术网

Oracle 使用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

我有一组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 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
用于单行命令,而匿名块用于大量代码