我正在编写一个脚本来用数据填充一些表以进行测试。
我想写如下内容,但我不知道该怎么做(我是 Oracle 11g)
SET ENABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE
SET DISABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE
INSERT INTO USERS
(ID, USR_NAME)
VALUES (:ENABLED_USER_ID, 'ANDREW');
INSERT INTO CAR
(CAR_ID, CAR_NAME, USR_ID)
VALUES (CARSEQ.NEXTVAL, 'FORD', :ENABLED_USER_ID);
INSERT INTO USERS
(ID, USR_NAME)
VALUES (:DISABLED_USER_ID, 'ANDREW');
INSERT INTO CAR
(CAR_ID, CAR_NAME, USR_ID)
VALUES (CARSEQ.NEXTVAL, 'FORD', :DISABLED_USER_ID);
Run Code Online (Sandbox Code Playgroud)
我知道我可以重新排列查询并使用sequence.currval
引用,但我更喜欢将 id 保存在正确命名的变量中。
也许我应该将脚本包装在 a 中,DECLARE ... BEGIN ... END;
但我希望有一种更简洁的方法来做到这一点。
似乎无论如何我都必须在DECLARE
块中声明变量。所以我正在尝试
DECLARE
USER_ID NUMBER(10,0) := …
Run Code Online (Sandbox Code Playgroud) 我与DI_TEST_AL
用户一起创建了一个物化视图,让我们将其命名为MY_MVIEW
. 它在USER_OBJECTS
表中显示为MATERIALIZED VIEW
,我尝试删除它,我收到一条成功消息,但该对象仍然存在。事实上,如果我尝试重新创建它,我会收到“对象已经存在”之类的错误。
我看到有一个同名的表属于另一个模式。我认为这不应该导致问题,但我想提一下。
这是 SQL*Plus 输出:
SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 17:01:50 2011
SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW';
OBJECT_NAME OBJECT_TYPE OWNER
----------- ----------------- ----------
MY_MVIEW MATERIALIZED VIEW DI_TEST_AL
MY_MVIEW TABLE DIDEV11
SQL> DROP MATERIALIZED VIEW MY_MVIEW;
Materialized view dropped.
SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW';
OBJECT_NAME OBJECT_TYPE OWNER
----------- ----------------- ----------
MY_MVIEW MATERIALIZED VIEW DI_TEST_AL
MY_MVIEW TABLE …
Run Code Online (Sandbox Code Playgroud)