我有一个要求如下所示:
假设我们有5行的EMP表,deptno = 20 - 这是我将从输入参数得到deptno ie20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
--------------------------------------------------------------------------------
7566 JONES MANAGER 7839 04/02/1981 2975 - 20
7788 SCOTT ANALYST 7566 12/09/1982 3000 - 20
7902 FORD ANALYST 7566 12/03/1981 3000 - 20
7369 SMITH CLERK 7902 12/17/1980 800 - 20
7876 ADAMS CLERK 7788 01/12/1983 1100 - 20
Run Code Online (Sandbox Code Playgroud)
现在我想在程序中写一个UPDATE查询,它将更新EMP表集JOB ='MANAGER',其中empno in(7788,7902); - 这里是empno ie 7788和7902我将从输入参数得到
我的更新查询应该为deptno = 20的2行更新JOB ='MANAGER',而我要更新的3行的其余部分将为Null值.
所以最终输出如下所示:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
--------------------------------------------------------------------------------
7566 JONES 7839 …Run Code Online (Sandbox Code Playgroud) 我想在Oracle对象类型中设置默认值,但是它需要为此在构造函数中传递所有属性。
无论如何,有没有,所以我只能在需要默认值的构造函数中传递必需的属性。
请查看以下详细信息
SQL> CREATE TYPE TYPE_SUB AS OBJECT(
2 COL1 NUMBER,
3个COL2 VARCHAR2(100)
4)
5非决赛
6 /
类型已创建。
SQL>创建或替换类型TYPE_MAIN
2 UNDER TYPE_SUB
3(
4个COL3 varchar2(10),
5个COL4 VARCHAR2(10),
6 CONSTRUCTOR FUNCTION TYPE_MAIN(COL1 NUMBER,COL2 VARCHAR2,COL3 varchar2,COL4 VARCHAR2)作为结果返回
7非决赛
8 /
类型已创建。
SQL>创建或替换类型主体TYPE_MAIN IS
2构造函数函数_MAIN(COL1编号,COL2 VARCHAR2,COL3 varchar2,COL4 VARCHAR2)按结果返回自
3开始
4 SELF.COL1:= nvl(COL1,123);
5 SELF.COL2:= nvl(COL2,'NA');
6 SELF.COL3:= nvl(COL3,'NA');
7 SELF.COL4:= nvl(COL4,NULL);
8 RETURN;
9结束;
10 END;
11 /
输入创建的正文。
SQL>创建表TAB_MAIN(
2个PKEY NUMBER,
3 COLTEST VARCHAR2(100),
4个COLNEW TYPE_MAIN)
5 /
表已创建。
SQL>插入TAB_MAIN(PKEY)值(1)
2 …