SQL Вставить указывает, что строки были вставлены, но при запуске ни одна из них не отображается, выберите все из этой таблицы. - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь лучше использовать CTE в Oracle SQL Разработчик запустил приведенный ниже код, который я упростил до его базовой c структуры. Он запустился успешно и сказал, что [x] количество строк было вставлено, но все же, когда я запускаю SELECT * FROM [TableName], ничего не появляется даже после фиксации. Кто-нибудь видит, где я напутал?

Обратите внимание, что я вынул реальные имена и тому подобное и заменил их на <какое-то поле>, которое представляет, что это такое.

--------------------------------------------------------------------------------
DROP TABLE <TableName> ;
--------------------------------------------------------------------------------
ALTER SESSION SET NLS_date_format = 'MM/DD/YYYY' ;
--------------------------------------------------------------------------------
CREATE TABLE <TableName> (
< Table Field Names> <Table Field Data Types>
);
--------------------------------------------------------------------------------
GRANT SELECT ON <TableName>  TO <User1>;
GRANT SELECT ON <TableName>  TO <User2>;
--------------------------------------------------------------------------------
INSERT INTO <TableName>
SELECT
  <Fields From CTE1, CTE2 & CTE3>
FROM (

WITH <CTE1> AS
  (
SELECT DISTINCT 
<Field Names From Table1>
FROM <Table1>
WHERE <Specific Field> NOT IN ('<input>')
  ),
--------------------------------------------------------------------------------
  <CTE2> AS
  (
SELECT DISTINCT 
<Fields From Table2>
FROM <Table2>
WHERE <Specific Field>  >= '<input>' 
AND <Specific Field> IN ('<input>')
GROUP BY 
  <Fields From Table2>
),
--------------------------------------------------------------------------------
<CTE3> AS
(
SELECT DISTINCT 
<Fields From Table3>
FROM <Table3>
WHERE  <Specific Field> = '<input>'
AND <Specific Field> >= '<input>'
AND <Specific Field> IN ('<input>')
)
--------------------------------------------------------------------------------
SELECT DISTINCT
*
FROM <CTE1> a

LEFT JOIN <CTE2> b
ON a.ID = b.ID

LEFT JOIN <CTE3> c
ON to_char(a.ID) = c.ID
)
--------------------------------------------------------------------------------
COMMIT;
--------------------------------------------------------------------------------
SELECT count(*) FROM <TableName>;
--------------------------------------------------------------------------------
...