所以我有下表
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应该被使用这是我的一个错误,但是代码仍然没有被执行。
2条答案
按热度按时间u5i3ibmn1#
请使用下面的查询,
您刚刚创建了一个过程,为了使它工作,您必须调用它,使用,
只有在修改表的结构时才应该使用alter语句。处理数据时,请仅使用dml。
6xfqseft2#
你使用的语法(或吉姆建议的)不是oracle。应该是这样的(包括您要求的“乘法”示例):
示例数据(该过程工作所需的最小列数):
程序:
测试:一旦创建了过程,就必须执行它。为了看结果
dbms_output.put_line
,在您使用的工具中启用serveroutput(对于sql*plus或sql developer,请执行set serveroutput on
).