如何解决在Oracle中的同一存储过程中更新查询
我想为同一存储过程中的同一表编写UPDATE
的逻辑。下面是我的SP。
PROCEDURE INSERT_PROJECT_MST
(
P_PROJECTNO IN NVARCHAR2,P_CRNO IN NVARCHAR2,P_APPNAME IN NVARCHAR2,P_APPFUNCDESC IN NVARCHAR2,P_AZUREFEATNO IN NVARCHAR2,P_AZUREFEATDESC IN NVARCHAR2,P_PROJMANAGER IN NVARCHAR2,P_PROJLEAD IN NVARCHAR2,P_REQBY IN NVARCHAR2,P_BUSInesSCAT IN NVARCHAR2,P_BUSInesSUSERCAT IN NVARCHAR2,P_FEATUREID IN NVARCHAR2,P_ISMGISRNO IN NVARCHAR2,P_REPLICARR IN NVARCHAR2,P_PRODRR IN NVARCHAR2,P_USERSTORY IN NVARCHAR2,P_ASSIGNEDBY IN NVARCHAR2,P_ASSIGNEDTO IN NVARCHAR2,P_CREATEDBY IN NVARCHAR2,P_LASTUPDBY IN NVARCHAR2,TBLDATA OUT NVARCHAR2
)
AS
V_PROJ_ID NUMBER:=0;
BEGIN
-- SELECT COUNT(MST_ID) INTO V_PROJ_ID FROM TBL_PROJECT_MST_INFO WHERE PROJECT_NO = P_PROJECTNO;
INSERT INTO TBL_PROJECT_MST_INFO
(
PROJECT_NO,CR_NO,APPLICATION_NAME,APP_FUNC_DESC,AZURE_FEATURE_NO,AZURE_FEATURE_DESC,PROJECT_MANAGER_NAME,PROJECT_LEAD_NAME,REQUESTED_BY,BUSInesS_CATEGORY,BUSInesS_USER_CATEGORY,RATIONAL_FEATURE_ID,ISMG_ISR_NO,REPLICA_RR,PROD_RR,USER_STORY,ASSIGNED_BY,ASSIGNED_TO,CREATED_BY,LAST_UPDATED_BY,CREATED_DATE,LAST_UPDATED_DATE
)
VALUES
(
P_PROJECTNO,P_CRNO,P_APPNAME,P_APPFUNCDESC,P_AZUREFEATNO,P_AZUREFEATDESC,P_PROJMANAGER,P_PROJLEAD,P_REQBY,P_BUSInesSCAT,P_BUSInesSUSERCAT,P_FEATUREID,P_ISMGISRNO,P_REPLICARR,P_PRODRR,P_USERSTORY,UPPER(P_ASSIGNEDBY),UPPER(P_ASSIGNEDTO),P_CREATEDBY,P_LASTUPDBY,SYSDATE,SYSDATE
)
RETURNING V_PROJ_ID INTO TBLDATA;
TBLDATA:='Record Saved Succesfully';
END INSERT_PROJECT_MST;
下面也是同样的表格说明。
Name Null Type
---------------------- -------- --------------
ID NUMBER
MST_ID NOT NULL NUMBER
PROJECT_NO NVARCHAR2(100)
CR_NO NVARCHAR2(100)
APPLICATION_NAME NVARCHAR2(255)
APP_FUNC_DESC CLOB
AZURE_FEATURE_NO NVARCHAR2(155)
AZURE_FEATURE_DESC CLOB
PROJECT_MANAGER_NAME NVARCHAR2(100)
PROJECT_LEAD_NAME NVARCHAR2(100)
REQUESTED_BY NVARCHAR2(100)
BUSInesS_CATEGORY NVARCHAR2(100)
BUSInesS_USER_CATEGORY NVARCHAR2(100)
RATIONAL_FEATURE_ID NVARCHAR2(100)
ISMG_ISR_NO NVARCHAR2(100)
REPLICA_RR NVARCHAR2(100)
PROD_RR NVARCHAR2(100)
USER_STORY NVARCHAR2(500)
CREATED_BY NVARCHAR2(100)
CREATED_DATE DATE
ASSIGNED_TO NVARCHAR2(100)
ASSIGNED_BY NVARCHAR2(100)
IS_ACTIVE CHAR(1)
LAST_UPDATED_BY NVARCHAR2(100)
LAST_UPDATED_DATE DATE
COLUMN3 VARCHAR2(20)
COLUMN4 VARCHAR2(20)
COLUMN5 VARCHAR2(20)
注意 MST_ID
是我的唯一身份列,我将基于此列来更新表格。
请帮助
解决方法
我不确定我是否理解您的要求。当前,您的过程在表中插入一行;您插入的值是过程的IN参数。
您希望能够通过调用相同的过程并传递相同的参数来更新同一表中的当前行?
如果是这样,合并可能是一个不错的选择。它也称为 upsert ,因为它能够在同一张表中插入行(不存在)或更新行(如果存在)。
这样的事情(简化;不希望输入那么多列):
error:NotRegistered
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。