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:整数部分最大位数
&
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
一、PL/SQL出现的目的
结构化查询语言(Structured Query
Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途
径,而是简单的调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的 ......
declare
begin
--SQL语句
--直接写的SQL语句(DML/TCL)
--间接写execute immediate <DDL/DCL命令字符串>
--select 语句
<1>必须带有into子句
&n ......
oracle中connect by prior实现递归查询
收集的几条在oracle中通过connect by prior来实现递归查询
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER &nbs ......