ORACLE创建存储过程,C21是工资表,A01是人员信息表,A0190是人员信息表里的字段‘员工工号’,根据员工工号查询员工的工资
时间: 2023-12-29 12:05:05 浏览: 30
好的,以下是创建一个存储过程的 ORACLE 代码,用于根据员工工号查询员工的工资:
```
CREATE OR REPLACE PROCEDURE get_salary
(
emp_id IN A01.A0190%TYPE,
salary OUT C21.SALARY%TYPE
)
IS
BEGIN
SELECT SALARY INTO salary
FROM C21
WHERE EMP_ID = emp_id;
END;
```
这个存储过程接受一个员工工号作为输入参数,然后使用该工号在 C21 工资表中查询员工的工资,并将结果作为输出参数返回。你可以在调用存储过程时传入员工工号,并获取对应员工的工资。
相关问题
NZTXZI_YJ表加字段 生效日期SXRQ,生效日期后NZTXZI_YJ表里的XIZI数据自动替换C21表里的XZ数据
好的,您的问题是关于在NZTXZI_YJ表中添加一个名为“生效日期(SXRQ)”的字段,并且在生效日期后自动替换C21表中的XZ数据。这需要编写一个触发器来实现。下面是一个示例触发器的伪代码:
CREATE TRIGGER update_xz_data
AFTER UPDATE ON NZTXZI_YJ
FOR EACH ROW
BEGIN
IF NEW.SXRQ > NOW() THEN
UPDATE C21 SET XZ = NEW.XIZI WHERE <some condition>;
END IF;
END;
请注意,这只是一个示例,需要根据您的具体情况进行修改。同时,也需要您确保在将触发器应用到数据库之前备份您的数据。
CREATE OR REPLACE FUNCTION NZTX_ZDDCTZQNR --年中调薪——自动带出调整前内容 (canshu int) RETURN number(10,2) is C212621 number(10,2); --调整前标准工资C21262 C212622 number(10,2); --调整前基本工资GZ_MAIN203 C212623 number(10,2); --调整前岗位工资C21057 C212624 number(10,2); --调整前绩效工资C21106 C212625 varchar2(500); --员工工号A0190 BEGIN select C21262 into C212621 from view_a01 left join C21 on C21.a0188=view_a01.a0188 where A0188=canshu ; SELECT GZ_MAIN203 into C212622 from view_a01 left join C21 on C21.GZ_MAIN203=view_a01.A011421 where A0188=canshu ; SELECT C21057 into C212623 from view_a01 left join C21 on C21.a0188=view_a01.a0188 where A0188=canshu ; select C21106 into C212624 from view_a01 left join C21 on C21.a0188=view_a01.a0188 where A0188=canshu ; select A0190 into C212625 from view_a01 where A0188=canshu; RETURN 'FFC_NZTXZJ_C212621:'||C21262||',FFC_NZTXZJ_C212622:'||GZ_MAIN203||',FFC_NZTXZJ_C212623:'||C21057||,'FFC_NZTXZJ_C212624:'||C212624||',FFC_NZTXZJ_C212625:'||A0190; END;哪里有错?
在这段代码中,存在一个语法错误。具体来说,这里有一个不必要的逗号,它应该被替换为一个加号。更改后的代码如下:
```
RETURN 'FFC_NZTXZJ_C212621:'||C21262||',FFC_NZTXZJ_C212622:'||GZ_MAIN203||',FFC_NZTXZJ_C212623:'||C21057||',FFC_NZTXZJ_C212624:'||C212624||',FFC_NZTXZJ_C212625:'||A0190;
```
这个错误可能会导致编译错误。