【发布时间】:2016-06-07 10:02:42
【问题描述】:
我的目标是创建 PL/SQL 过程 EditRegion(par_ID int, par_Name varchar2) 如果 par_ID0 那么它应该(对于 REGIONS 中的现有语句,其中 REGION_ID=par_ID)使用 par_Name 中的值更新 REGION_NAME。
如果par_ID=0,我的其他方法应该是在REGIONS 中插入新的slog,其中REGION_NAME=par_Name,并且在REGION_ID 编号中,该编号比表中最大的REGION_ID 大一个。我正在使用我在网上某处找到的这个 max 函数,但我不知道如何解决这个问题。
CREATE OR REPLACE PROCEDURE EditRegion
AS
par_ID int;
par_Name VARCHAR2(10) ;
REGION_ID : = SELECT MAX (REGION_ID),from REGIONS ;
BEGIN
if par_ID<>0 then
UPDATE regions
SET REGION_NAME = par_NAME
WHERE REGION_ID = par_ID ;
else
INSERT into REGIONS
(REGION_ID,REGION_NAME)
VALUES
(REGION_NAME := par_NAME ,
REGION_ID := REGION_ID +1 );
END IF;
END;
/
【问题讨论】:
-
这个过程是否应该获取参数?看起来您没有填充
par_ID和par_Name -
不,它应该独立工作
-
那么
par_ID怎么会等于0呢?par_NAME将如何获得任何价值? -
所以你认为我应该给它们添加一些值?
-
您不介意吗?这些参数是
NULL,直到您以某种方式填充它们。