空闲时间学习SQL

问题描述 投票:0回答:2

<< 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应该被使用,这对我来说是一个错误,但是仍然没有执行代码。

sql oracle oracle10g
2个回答
0
投票

请使用以下查询,

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

您刚刚创建了过程,要使其正常运行,必须调用它,使用来调用过程,

execute procedure_name(parameter1, parameter2);

Alter语句仅在修改表结构时才应使用。在处理数据时,请仅使用DML。


0
投票

您使用的语法(或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>

© www.soinside.com 2019 - 2024. All rights reserved.