我有一个PL / SQL脚本,它在oracle DB上执行许多过程。 该脚本定义:
DECLARE
productkey VARCHAR2(100);
BEGIN
productKey := '000000000070307037';
...
ProcedureName(productKey);
该过程需要VARCHAR2
PROCEDURE ProcedureName (
productKey VARCHAR2
)
该程序插入表格中:
BEGIN
Insert into Mytable
(
THIS_PRODUCT_KEY
)
Values
(productKey);
当我查询该表时,产品Key = 70307037,即前导0已经丢失。
我看到了一些类似的问题,建议使用TO_CHAR,我尝试使用TO_CHAR在脚本中定义productKey,并修改使用TO_CHAR写入的过程:
BEGIN
Insert into Mytable
(
THIS_PRODUCT_KEY
)
Values
(TO_CHAR(productKey,'000000000000000000'));
在没有领先0的情况下仍然存在。
有多个查询使用产品密钥加入,并且在缺少0时不起作用。
当变量是VARCHAR时,为什么我会丢失0?
答案 0 :(得分:2)
我相信" THIS_PRODUCT_KEY"您的" Mytable"中的列table不是varchar2列。我认为这是数字。如果更改" THIS_PRODUCT_KEY"的数据类型列到varchar2,它不会失去0。