问题描述
你好,汤姆,
我已经创建了下一个过程到数据库:
过程DACQP00_PIVOT_DATES (VARCHAR2中的p_schema,p_party out时间戳) 为
开始
开始
从 '| | p_schema | |' 立即执行 (“选择到 _ 时间戳 (文件 _ 创建 _ 日期,” dd/MM/YY HH24:MI:SS,FF'')。DACQT_PIVOT_FILES,其中FILE_NAME = “party” ”) 进入p_party;
异常
当NO_DATA_FOUND时,p_party := TO_DATE('31/12/9999 ','DD/MM/yyy');
结束;
结束;
当我直接将过程执行到数据库中时,该过程工作正常,从表DACQT_PIVOT_FILES中提取时间戳。p_schema变量被定义为使用相同的过程从不同的数据库模式中读取。
当我使用shell脚本执行过程时,我获得错误: “执行已完成错误ORA-01830: 日期格式图片在转换整个输入字符串之前结束”,我不明白为什么。
拜托,你能告诉我使用时间戳功能是否有问题吗?
非常感谢。
致以最良好的问候。
*
过程DACQP00_PIVOT_DATES由其他主过程执行:
过程DACQP00_PARTY (p_full_load布尔值,p_country VARCHAR2) 为
vs_schema VARCHAR2(30) := 'dac01 ';
vc_party_exec_date时间戳;
DACQP00_PIVOT_DATES (vs_schema,vc_party_exec_date );
如果vc_party_exec_date <> 到日期 (“31/12/9999”,“dd/MM/yyy'),则
....
如果结束;
结束;
*
执行过程DACQP00_PARTY的Shell脚本为:
函数使用
{
回声 “参数错误”
回显 “用法 $0 <用户> <密码> <过程> <曲目文件日志> ”
回声 “ejemplo $0 dac00 pass234 DAC00_PP2_SCAN DAC00.DACQP00 _ 方真实FR $ UNXLOG idq_ep01.log”
出口1
}
# 控制参数的功能
#-
函数控制器参数
{
如果 [$ # -ne 8]
然后
用法
fi
用户 = $1
密码 = $2
CONEXION = $3
程序 = $4
真值 = 5美元
PAIS = 6美元
FICLOG = $7
NOMLOG = $8
}
# 程序负责人
# -----------------
控制器参数 $ *
# sqlplus -s $ {用户}/$ {密码} 1>>$ FICLOG/$ NOMLOG 2>& 1 <<-FIN
输出 = $(sqlplus -s $ 用户/$ 密码 @ $ CONEXION >> $ FICLOG/$ NOMLOG <<-FIN
设置关闭反馈
将服务器输出设置为
开始
$ PROCEDURE($ TRUEOFALSE,'$ pais');
DBMS_OUTPUT.PUT_LINE(0);
异常
当其他人那么
DBMS_OUTPUT.PUT_LINE(SQLCODE);
结束;
/
鳍)
回声 '代码重述dps del pl'
cat $ 输出 | grep 'ORA-' > /dev/null
如果 [$?-等式0]
然后
# 回声 $ 输出
99号出口
# 退出
fi
出口0
*********
非常感谢您的帮助。
我已经创建了下一个过程到数据库:
过程DACQP00_PIVOT_DATES (VARCHAR2中的p_schema,p_party out时间戳) 为
开始
开始
从 '| | p_schema | |' 立即执行 (“选择到 _ 时间戳 (文件 _ 创建 _ 日期,” dd/MM/YY HH24:MI:SS,FF'')。DACQT_PIVOT_FILES,其中FILE_NAME = “party” ”) 进入p_party;
异常
当NO_DATA_FOUND时,p_party := TO_DATE('31/12/9999 ','DD/MM/yyy');
结束;
结束;
当我直接将过程执行到数据库中时,该过程工作正常,从表DACQT_PIVOT_FILES中提取时间戳。p_schema变量被定义为使用相同的过程从不同的数据库模式中读取。
当我使用shell脚本执行过程时,我获得错误: “执行已完成错误ORA-01830: 日期格式图片在转换整个输入字符串之前结束”,我不明白为什么。
拜托,你能告诉我使用时间戳功能是否有问题吗?
非常感谢。
致以最良好的问候。
*
过程DACQP00_PIVOT_DATES由其他主过程执行:
过程DACQP00_PARTY (p_full_load布尔值,p_country VARCHAR2) 为
vs_schema VARCHAR2(30) := 'dac01 ';
vc_party_exec_date时间戳;
DACQP00_PIVOT_DATES (vs_schema,vc_party_exec_date );
如果vc_party_exec_date <> 到日期 (“31/12/9999”,“dd/MM/yyy'),则
....
如果结束;
结束;
*
执行过程DACQP00_PARTY的Shell脚本为:
函数使用
{
回声 “参数错误”
回显 “用法 $0 <用户> <密码>
回声 “ejemplo $0 dac00 pass234 DAC00_PP2_SCAN DAC00.DACQP00 _ 方真实FR $ UNXLOG idq_ep01.log”
出口1
}
# 控制参数的功能
#-
函数控制器参数
{
如果 [$ # -ne 8]
然后
用法
fi
用户 = $1
密码 = $2
CONEXION = $3
程序 = $4
真值 = 5美元
PAIS = 6美元
FICLOG = $7
NOMLOG = $8
}
# 程序负责人
# -----------------
控制器参数 $ *
# sqlplus -s $ {用户}/$ {密码} 1>>$ FICLOG/$ NOMLOG 2>& 1 <<-FIN
输出 = $(sqlplus -s $ 用户/$ 密码 @ $ CONEXION >> $ FICLOG/$ NOMLOG <<-FIN
设置关闭反馈
将服务器输出设置为
开始
$ PROCEDURE($ TRUEOFALSE,'$ pais');
DBMS_OUTPUT.PUT_LINE(0);
异常
当其他人那么
DBMS_OUTPUT.PUT_LINE(SQLCODE);
结束;
/
鳍)
回声 '代码重述dps del pl'
cat $ 输出 | grep 'ORA-' > /dev/null
如果 [$?-等式0]
然后
# 回声 $ 输出
99号出口
# 退出
fi
出口0
*********
非常感谢您的帮助。
专家解答
如果FILE_CREATION_DATE是日期或时间戳列?还是varchar2?
您可能正在进行无声转换,例如
您可能正在进行无声转换,例如
SQL> create table t ( FILE_CREATION_DATE timestamp);
Table created.
SQL> insert into t values (systimestamp);
1 row created.
SQL>
SQL> alter session set nls_timestamp_format = 'DD/MM/YY HH24:MI:SS,FF';
Session altered.
SQL>
SQL> select to_timestamp(FILE_CREATION_DATE,'DD/MM/YY HH24:MI:SS,FF') from t;
TO_TIMESTAMP(FILE_CREATION_DATE,'DD/MM/YYHH24:MI:SS,FF')
---------------------------------------------------------------------------
27/03/17 09:28:10,352000
1 row selected.
--
-- that looks ok, but in reality we were converting FILE_CREATION_DATE to a string,
-- because the first param of to_timestamp has to be a string. So we were in fact
-- relying on the format masks to match. If I change the format mask (eg the
-- shell script might have a different value set)
--
SQL>
SQL> alter session set nls_timestamp_format = 'MON/DD/YYYY';
Session altered.
SQL>
SQL> select to_timestamp(FILE_CREATION_DATE,'DD/MM/YY HH24:MI:SS,FF') from t;
select to_timestamp(FILE_CREATION_DATE,'DD/MM/YY HH24:MI:SS,FF') from t
*
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




