在Oracle中创建之前,尝试检查表是否存在.从Stackoverflow和其他人那里搜索大部分帖子.找一些查询,但它对我不起作用.
IF((SELECT count(*) FROM dba_tables where table_name = 'EMPLOYEE') <= 0)
THEN
create table EMPLOYEE
(
ID NUMBER(3),
NAME VARCHAR2(30) NOT NULL
)
END IF;
Run Code Online (Sandbox Code Playgroud)
这给了我错误
Error: ORA-00900: invalid SQL statement
SQLState: 42000
ErrorCode: 900
Position: 1
Run Code Online (Sandbox Code Playgroud)
我搜索条件的语法IF,我认为哪个也是写的.请建议我....
在我们的项目中,我创建了一些全局临时表,如下所示:
CREATE GLOBAL TEMPORARY TABLE v2dtemp (
id NUMBER,
GOOD_TYPE_GROUP VARCHAR2(250 BYTE),
GOOD_CODE VARCHAR2(50 BYTE),
GOOD_TITLE VARCHAR2(250 BYTE)
)
ON COMMIT PRESERVE ROWS;
Run Code Online (Sandbox Code Playgroud)
但问题出现的时候我想放弃这张桌子.甲骨文不会让我放弃表,它说:
ORA-14452: attempt to create, alter or drop an index on temporary table already in use
Run Code Online (Sandbox Code Playgroud)
我必须在某些过程中使用此表,但可能会根据其他报告进行更改.所以我应该总是丢弃表,然后我应该用我需要的字段重新创建它.
出于某些商业原因,我必须使用它,所以我不可能使用表格或其他东西.我只能使用临时表.我尝试了提交删除行,但是当我调用我的过程来使用此表中的数据时,表中没有更多行,并且它们已被删除.
任何帮助将非常感谢,提前感谢
///编辑
public void saveJSONBatchOpenJobs(final JSONArray array, MtdReport report) {
dropAndCreateTable();
String sql = "INSERT INTO v2d_temp " +
"(ID, KARPARDAZ, GOOD_TYPE_GROUP, GOOD_CODE, GOOD_TITLE, COUNT, "
+ "FACTOR_COUNT, GHABZ_COUNT, DEAL_NO, DEAL_DATE, REQUEST_NO, REQUEST_DATE, "
+ "REQUEST_CLIENT, STATUS, TYPE, MTDREPORT_ID, …Run Code Online (Sandbox Code Playgroud)