<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8xQjVrMS5wbmcifQ==” alt =“在此处输入图像描述”>所以我有下表
EMPNO ENAME DEPTN JOB HIREDDATE SALARY
111 Narayan R22 Electrical 26-DEC-99 5000
108 Horen P69 PWD 10-DEC-95 10000
130 Roy A13 Security 15-SEP-01 25000
420 Roy D12 IT 15-SEP-99 2500
100 Allu A13 Security 26-JAN-15 15000
使用数据类型
EMPNO NOT NULL NUMBER(38),
ENAME NOT NULL VARCHAR2(20),
DEPTNO VARCHAR2(5),
JOB VARCHAR2(20),
HIREDDATE DATE,
SALARY NUMBER(38)
我想尝试创建存储过程 a)更改任何员工的雇用日期。 b)执行DML命令(插入,更新和删除) c)两个数相乘
我尝试使用此代码
CREATE PROCEDURE ChangeHired @EmpNo int, @Hired date
AS
ALTER TABLE Employee01 MODIFY HireDate = @Hired WHERE EmpNo = @EmpNo
GO;
但是它在Oracle 10g中不起作用。需要帮助。
编辑:UPDATE Employee01 SET HireDate = @Hired WHERE EmpNo = @EmpNo应该被使用,这对我来说是一个错误,但是仍然没有执行代码。
请使用以下查询,
update Employee01 set HireDate = @Hired WHERE EmpNo = @EmpNo
您刚刚创建了过程,要使其正常运行,必须调用它,使用来调用过程,
execute procedure_name(parameter1, parameter2);
Alter语句仅在修改表结构时才应使用。在处理数据时,请仅使用DML。
您使用的语法(或Jim建议)不是Oracle。应该是这样的东西(包括您要求的“乘法”示例):
示例数据(仅此过程所需的最少列数:
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
SQL> select * From employee1;
EMPNO HIREDDATE
---------- ----------
111 08.06.2020
步骤:
SQL> create or replace procedure changehired(par_empno in int, par_hired in date)
2 is
3 a number := 2;
4 b number := 3;
5 result number;
6 begin
7 update employee1 set
8 hireddate = par_hired
9 where empno = par_empno;
10
11 result := a * b;
12 dbms_output.put_line(a || ' * '|| b || ' = ' || result);
13 end;
14 /
Procedure created.
测试:一旦过程创建完毕,就必须。为了查看dbms_output.put_line
的结果,请在您使用的工具中启用服务器输出(对于SQL * Plus或SQL Developer,请执行set serveroutput on
)。SQL> set serveroutput on;
SQL> begin
2 changehired(111, date '2020-06-08');
3 end;
4 /
2 * 3 = 6
PL/SQL procedure successfully completed.
SQL> select * from employee1;
EMPNO HIREDDATE
---------- ----------
111 08.06.2020
SQL>