2017-08-07 90 views
0

我有一个PL/SQL脚本,它在oracle数据库上执行一些过程。 脚本定义了:VARCHAR执行PLSQL过程时,导致0的值丢失

DECLARE 
    productkey VARCHAR2(100); 

BEGIN 
    productKey := '000000000070307037'; 

    ... 

    ProcedureName(productKey); 

该过程需要一个VARCHAR2

PROCEDURE  ProcedureName (
    productKey VARCHAR2 
) 

的过程插入到一个表:

BEGIN 
    Insert into Mytable 
     (
     THIS_PRODUCT_KEY 
    ) 
    Values 
     (productKey); 

当我查询该表,产品密钥= 70307037,即领先的0已经丢失。

我看到那里TO_CHAR建议一些类似的问题,我试着用TO_CHAR在脚本中定义的ProductKey,也modifiying程序使用TO_CHAR写:

BEGIN 
    Insert into Mytable 
     (
     THIS_PRODUCT_KEY 
    ) 
    Values 
     (TO_CHAR(productKey,'000000000000000000')); 

还来过没有前导0。

有多个查询使用产品密钥进行连接,并且在缺少0时不起作用。

当变量为VARCHAR时,为什么我会丢失0的值?

+0

试试'TO_CHAR(productKey)'。 – Ofisora

+2

我敢打赌,表格列的数据类型是NUMBER。 – APC

+0

在插入 – Ikrom

回答

2

我相信“Mytable”表中的“THIS_PRODUCT_KEY”列不是varchar2列。我认为这是数字。如果将“THIS_PRODUCT_KEY”列的数据类型更改为varchar2,则它不会丢失0。