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 ......
listener.ora、 tnsnames.ora和sqlnet.ora这3个文件是关系oracle网络配置的3个主要文件,其中listener.ora是和数据库服务器端 相关,而tnsnames.ora和sqlnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密。
检查客户端oracle网络的时候可以先检查sqlnet.ora文件:
# SQLNET.ORA Network Configuration ......
方法一,使用SQL*Loader
这个是用的较多的方法,前提必须oracle数据中目的表已经存在。
大体步骤如下:
1 将excle文件另存为一个新文件比如文件名为text.txt,文件类型选文本文件(制表符分隔),这里选择类型为csv(逗号分隔)也行,但是在写后面的control. ......
一、PL/SQL出现的目的
结构化查询语言(Structured Query
Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途
径,而是简单的调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的 ......
declare
begin
--SQL语句
--直接写的SQL语句(DML/TCL)
--间接写execute immediate <DDL/DCL命令字符串>
--select 语句
<1>必须带有into子句
&n ......