English 中文(简体)
DDL 在 DBMS_JOB 中的 DDL 语句
原标题:DDL Statements in DBMS_JOB

我试图使用 DBMS_JOB(出于安全原因,我不能使用 DBMS_SCHEDULER) 来安排一份工作, 该工作使用 DDL 语句 。

DECLARE
job_num NUMBER;
BEGIN
DBMS_JOB.SUBMIT(job => job_num,
what =>  BEGIN EXECUTE IMMEDIATE   CREATE TABLE temp1 (ID NUMBER)  ; END; 
);
DBMS_OUTPUT.PUT_LINE( JobID ||job_num);
DBMS_JOB.RUN(job_num);
END;
/

它没有执行 给我错误信息 :

ORA-12011: execution of 1 jobs failed ORA-06512: at "SYS.DBMS_IJOB", line 548 ORA-06512: at "SYS.DBMS_JOB", line 278 ORA-06512: at line 8

On removing the DBMS_JOB.RUN() statement from inside the anonymous block, I am able to at least create (and save) the job. When I check the job, it has saved this as the code to execute BEGIN EXECUTE IMMEDIATE CREATE TABLE temp1 (id NUMBER) ; END;

如果我独立执行它,它显然会执行。它只有在我试图通过 DBMS_JOB.RUN () 的电话执行整件事时,它才会失败。

在 DBMS_JOB 中, DDL 语句是否限制用作参数? 在文档中找不到任何指针 。

最佳回答

在回应其他评论者的意见的同时 -- 在苍蝇上创建表格是一个红旗, 经常表明你真的应该使用全球临时表格 -- 几个问题。

  1. Is there a reason that you need the DBMS_JOB.RUN call? Your call to DBMS_JOB.SUBMIT is telling Oracle to run the job asynchronously as soon as the parent transaction commits. So, normally, you d call DBMS_JOB.SUBMIT and then just `COMMIT .
  2. Does the user that is submitting job have the CREATE TABLE privilege granted directly? My guess is that the user only has the CREATE TABLE privilege granted via a role. That would allow you to run the anonymous PL/SQL block interactively but not in a job. If so, you ll need the DBA to grant you the CREATE TABLE privilege directly, not via a role.
  3. When a job fails, an entry is written to the alert log with the error message. Can you (or, more likely, the DBA) get the error message and the error stack from the alert log and post it here (assuming it is something other than the privileges issue from #2).
问题回答

暂无回答




相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签