在空闲时间学习sql

iqjalb3h  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(321)


所以我有下表

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命令(insert、update和delete)c)乘以两个数字
我试着用这个密码

CREATE PROCEDURE ChangeHired @EmpNo int, @Hired date
AS
ALTER TABLE Employee01 MODIFY HireDate = @Hired WHERE EmpNo = @EmpNo
GO;

但它在oracle10g中不起作用。需要帮助。
编辑:update employee01 set hiredate=@hired where empno=@empno应该被使用这是我的一个错误,但是代码仍然没有被执行。

u5i3ibmn

u5i3ibmn1#

请使用下面的查询,

update Employee01 set HireDate = @Hired WHERE EmpNo = @EmpNo

您刚刚创建了一个过程,为了使它工作,您必须调用它,使用,

execute procedure_name(parameter1, parameter2);

只有在修改表的结构时才应该使用alter语句。处理数据时,请仅使用dml。

6xfqseft

6xfqseft2#

你使用的语法(或吉姆建议的)不是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 ,在您使用的工具中启用serveroutput(对于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>

相关问题