【发布时间】:2014-09-23 14:40:09
【问题描述】:
这可能很简单,但我无法弄清楚。我有一个包,它有一个存储过程,负责根据临时表中的信息对主表进行插入、删除或更新。主表和暂存表的架构是相同的,只是暂存表有一个名为“ACTION”的列,它确定要执行的操作。
查询更新和删除工作,但存储过程中的插入查询永远不会在主表中插入数据。这是我正在使用的存储过程中的插入查询。请帮助#goingNuts
我也尝试过明确指定提交,但没有成功。我尝试使用别名GSC,仍然没有运气。
--Inserts
INSERT
INTO GS_CASE
(
SYSTEM,
CASE_ID,
DISPLAY_ID,
OWNER_FIRSTNAME,
OWNER_MIDDLENAME,
OWNER_LASTNAME
)
SELECT GSC.SYSTEM,
GSC.CASE_ID,
GSC.DISPLAY_ID,
GSC.OWNER_FIRSTNAME,
GSC.OWNER_MIDDLENAME,
GSC.OWNER_LASTNAME
FROM GS_STAGING_CASE GSC WHERE GSC.ACTION = 'INSERT';
以下表格架构:
CREATE TABLE "COSI"."GS_CASE"
( "SYSTEM" VARCHAR2(50 BYTE),
"CASE_ID" VARCHAR2(100 BYTE),
"DISPLAY_ID" VARCHAR2(100 BYTE),
"OWNER_FIRSTNAME" VARCHAR2(1000 BYTE),
"OWNER_MIDDLENAME" VARCHAR2(1000 BYTE),
"OWNER_LASTNAME" VARCHAR2(1000 BYTE)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "COSI_DATA" ;
CREATE TABLE GS_STAGING_CASE
(
SYSTEM VARCHAR2(50 BYTE)
, CASE_ID VARCHAR2(100 BYTE)
, DISPLAY_ID VARCHAR2(100 BYTE)
, OWNER_FIRSTNAME VARCHAR2(1000 BYTE)
, OWNER_MIDDLENAME VARCHAR2(1000 BYTE)
, OWNER_LASTNAME VARCHAR2(1000 BYTE)
, ACTION VARCHAR2(25 BYTE)
)
LOGGING
TABLESPACE COSI_DATA
PCTFREE 10
INITRANS 1
STORAGE
(
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS UNLIMITED
BUFFER_POOL DEFAULT
)
NOCOMPRESS;
我在 GS_Case 表上有索引,但在暂存时没有
【问题讨论】:
-
您是否缺少“价值观”部分?
Insert into table (col1, col2) values ( Select col1_val, col2_val从表where条件); -
@BrianRobbins 它不适用于您必须使用
values或select的值 -
给我们看看你的程序的源代码,你有什么错误?
-
您是遇到错误还是没有插入预期的行?
-
GSC.ACTION = 'INSERT' 是否从 GS_STAGING_CASE 表中检索任何数据。您能否运行 SELECT DISTINCT ACTION FROM GS_STAGING_CASE 并向我们提供结果。
标签: sql oracle stored-procedures insert