需求:我要在employee 表中插入数据,如果表里是空的话,第一行employee_id字段 默认为 ' emp1001 ',以后再插入
的话自动加1 即 emp1002, emp1003,.....
一下是我在sql2000里创建的存储过程 测试成功CREATE proc proc_employee_insert
@employee_id varchar(50) = null,
@employee_name varchar(50),as
select @employee_id=max(employee_id) from tb_employee
if (@employee_id is null)
set @employee_id = 'emp1001'
else
select @employee_id='emp' + cast((cast(substring(max(employee_ID),4,4) as int)+1) as varchar) from tb_employee
begin
insert into tb_employee values (@employee_id,@employee_name)
endGO
问提: 我现在要转到oracle里 该如何写; 我自己写了好几次都不行 。其中oracle中的cast函数和sql2000用法一样,
substring 函数 现在是 substr
表如下:
oracle 中创建的表employee
create table employee
(
employee_id varchar2(50) not null,
employee_name varchar2(50)
)
的话自动加1 即 emp1002, emp1003,.....
一下是我在sql2000里创建的存储过程 测试成功CREATE proc proc_employee_insert
@employee_id varchar(50) = null,
@employee_name varchar(50),as
select @employee_id=max(employee_id) from tb_employee
if (@employee_id is null)
set @employee_id = 'emp1001'
else
select @employee_id='emp' + cast((cast(substring(max(employee_ID),4,4) as int)+1) as varchar) from tb_employee
begin
insert into tb_employee values (@employee_id,@employee_name)
endGO
问提: 我现在要转到oracle里 该如何写; 我自己写了好几次都不行 。其中oracle中的cast函数和sql2000用法一样,
substring 函数 现在是 substr
表如下:
oracle 中创建的表employee
create table employee
(
employee_id varchar2(50) not null,
employee_name varchar2(50)
)
解决方案 »
- CREATE DIRECTORY 可以指定远程目录吗? LAN里的另一台LINUX SERVER
- oracle安装之路命途多舛啊~~~~这不问题又来了 ,还是希望哪位大侠帮帮忙解决一下吧
- 物化视图在UPDATE、DELETE时怎么更新
- 我最多能给100分,求解!
- 备份与恢复oracle数据库的方法与步骤?
- oracle9i + redhat9 下,oracle怎么修改字符集?
- Unix下Oracle一般安装在那个目录下好!
- 请教高手在存储过程中一个sql语句的用法。
- oracle有没有和sqlserver的right一样的函数
- 请问如何在库中存储图片和视频???谢谢!!!
- SATA 硬盘是否可以做 Oracle 10G RAC ?
- 请问如何用oracle触发器实现不允许新增/删除表/增加/减少/修改字段类型
create or replace procedure proc_employee_insert
(
employee_id in varchar2(50),
employee_name in varchar2()
)
as
begin
select max(employee_id) into employee_id from tb_employee;
if employee_id is null then
set employee_id := 'emp1001';
else
select 'emp' || LPAD(substr(max(employee_ID), 4, 4) + 1, 4, '0') into employee_id from tb_employee;
end if;
insert into tb_employee values (employee_id,employee_name);
commit;
EXCEPTION
WHEN others THEN
rollback;
RETURN;
end proc_employee_insert;