需求:我要在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)
)
解决方案 »
- 请问如何用AIX SHELL实现数据库连接访问修改等操作
- 绑定变量的sql通过程序查很慢,直接执行很快,这是为什么?
- 求一SQL语句
- 各位大哥大姐,小弟疯了,问了问题你们也不帮,算了,用RMB买脚本成吗!!!!!!
- 问个oracle事物控制的问题!
- 请教一个问题
- 数据库设计的问题
- 如果oracle的函数名是用字符串变量表示的,我如何调用函数?
- 求助,安装完oracle 11g 后无法 dbca创建数据库,提示configuring database with databas control requi
- oracle查询实现列隐藏
- 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;