如何在PLSQL中使用UPDATE和WITH
有没有人有关于如何在PLSQL查询中使用和更新的示例 我狂饮和谷歌搜索都没有成功 这就是我要做的如何在PLSQL中使用UPDATE和WITH,sql,plsql,with-clause,Sql,Plsql,With Clause,有没有人有关于如何在PLSQL查询中使用和更新的示例 我狂饮和谷歌搜索都没有成功 这就是我要做的 WITH OldRecords AS ( SELECT 'New Records' as RecordLabel, rowid, OrDev.* FROM CDR.MSRS_OR_ORDEV OrDev WHERE 1=1 AND OrDev.ASOFENDDATETIME IS NULL AND OrDev.REPORTSTARTDATE = to_date ('7/
WITH
OldRecords AS
(
SELECT 'New Records' as RecordLabel, rowid, OrDev.*
FROM CDR.MSRS_OR_ORDEV OrDev
WHERE 1=1
AND OrDev.ASOFENDDATETIME IS NULL
AND OrDev.REPORTSTARTDATE = to_date ('7/1/2010', 'mm/dd/yyyy')
AND OrDev.REPORTENDDATE = to_date ('7/31/2010', 'mm/dd/yyyy')
AND OrDev.downloadrequestid <> 3
),
NewRecords AS
(
SELECT 'Old Records' as RecordLabelrowid, OrDev.*
FROM CDR.MSRS_OR_ORDEV OrDev
WHERE 1=1
AND OrDev.ASOFENDDATETIME IS NULL
AND OrDev.REPORTSTARTDATE = to_date ('7/1/2010', 'mm/dd/yyyy')
AND OrDev.REPORTENDDATE = to_date ('7/31/2010', 'mm/dd/yyyy')
AND OrDev.downloadrequestid = 3
)
UPDATE CDR.MSRS_OR_ORDEV SET ASOFENDDATETIME = GETDATE()
WHERE RowID IN
(
SELECT OldRecords.RowId
FROM OldRecords
INNER JOIN NewRecords
ON OldRecords.Customer_Id = NewRecords.Customer_Id
AND OldRecords.BusinesKey1 = NewRecords.BusinesKey1
AND OldRecords.BusinesKey2 = NewRecords.BusinesKey2
)
基本上这是一个II型维度更新。查看和的语法图,我不确定子查询分解是否可以用于更新。您可以将这些查询全部替换回UPDATE语句的子查询部分,也可以为它们创建视图。我同意视图。这是如何在PLSQL更新中使用with。请注意,这仅适用于单列更新
UPDATE CDR.MSRS_OR_ORDEV
SET ASOFENDDATETIME = sysdate
WHERE RowID IN
(
WITH
OldRecords AS
(
SELECT rowid, OldRecords.*
FROM CDR.MSRS_OR_ORDEV OldRecords
WHERE 1=1
AND OldRecords.ASOFENDDATETIME IS NULL
AND OldRecords.REPORTSTARTDATE = to_date ('7/1/2010', 'mm/dd/yyyy')
AND OldRecords.REPORTENDDATE = to_date ('7/31/2010', 'mm/dd/yyyy')
AND OldRecords.downloadrequestid <> 3
),
NewRecords AS
(
SELECT rowid, NewRecords.*
FROM CDR.MSRS_OR_ORDEV NewRecords
WHERE 1=1
AND NewRecords.ASOFENDDATETIME IS NULL
AND NewRecords.REPORTSTARTDATE = to_date ('7/1/2010', 'mm/dd/yyyy')
AND NewRecords.REPORTENDDATE = to_date ('7/31/2010', 'mm/dd/yyyy')
AND NewRecords.downloadrequestid = 3
)
SELECT OldRecords.RowId
FROM OldRecords
INNER JOIN NewRecords
ON OldRecords.BusinesKey1 = NewRecords.BusinesKey1
AND OldRecords.BusinesKey2 = NewRecords.BusinesKey2
);
@挫败WithFormsDesigner问题已编辑以添加代码