Oracle 存储过程中调用自定义的函数问题?
我现在在做一个Oracle数据导入,要将EXCEL数据导入到Oracle数据库中,先读取数据,将数据保存在一张临时表中,然后导入之前对临时表中数据的每个字段做校验,比如数据是否为整数,整数的最大位数,及导入的数据在原数据库中是否已经存在等,我写了一个存储过程,对异常的数据,将字段“is_checked”设为异常信息。
在对数字型数据做校验时,为了验证该字段是否为数字,或者为整数,我在Oracle中写了一个自定义的数字校验函数,并在存储过程中调用该函数,但是我发现第一次导入时,所有数据校验正常,但是当第二次点击导入的时候,存储过程就不能重新调用该函数,理所当然校验的数据也都是错误的,与第一次校验的结果大为不同,调试修改之后,发现必须重新编译这个校验函数才能正常的校验。这个问题就连现在的项目经理也解决不了了:)
在这里想问大家,有什么办法可以在存储过程中调用该函数时只需编译一次?或者调用之前对该函数重新编译的方法,有做过类似项目的同仁帮忙解决一下啊:)
呵呵 比较头疼的问题,也可能是我的校验函数出了问题,以下是我自己写的的Oracle数字校验函数,不知对否,望多多指教~~
CREATE OR REPLACE FUNCTION IS_POSITIVE_NUMERIC(MyStr VARCHAR2,intMax integer,decimalMax integer) RETURN NUMBER
IS
/******************************************************************************
PURPOSE: 判断输入的字符串是否为合法的正数
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2008-11-17 lei.zhao 1. Created this procedure.
输入参数:
MyStr :要检验的字符串
intMax:整数部分最大位数
&
相关文档:
listener.ora、 tnsnames.ora和sqlnet.ora这3个文件是关系oracle网络配置的3个主要文件,其中listener.ora是和数据库服务器端 相关,而tnsnames.ora和sqlnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密。
检查客户端oracle网络的时候可以先检查sqlnet.ora文件:
# SQLNET.ORA Network Configuration ......
一、在PLSQL中创建表:
create table HWQY.TEST
(
CARNO VARCHAR2(30),
CARINFOID NUMBER
)
二、在PLSQL中创建存储过程:
create or replace procedure pro_test
AS
carinfo_id number;
BEGIN
select s_CarInfoID.nextval into carinfo_id
from dual;
insert into test(test ......
转自某地,对作者很愧疚- -!不晓得地址了..
ORACLE多表查询优化
这里提供的是执行性能的优化,而不是后台数据库优化器资料:
参考数据库开发性能方面的各种问题,收集了一些优化方案统计如下(当然,象索引等优化方案太过简单就不列入了,嘿嘿):
执行路径:ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用: ......
《1》DDL语句(数据定义语言) Data Define Language
create
alter
drop
truncate 开头的语句 truncate table <表名>
特点:<1>建立和修改数据对象
&nb ......
最近做了一个系统自动抽检的东东,Oracle中创建的Job,会在自己设定的时间自动运行存储过程。下面为最近总结的东东
假设你的存储过程名为PROC_RAIN_JM
再写一个存储过程名为PROC_JOB_RAIN_JM
内容是:
///////////////////////////////////////////////////////////////////
Create Or Replace Procedure ......