Hi All,
 
I am getting the following error when I try INSERTing selected rows from
one database to another.
 
ORA-01843: not a valid month
 
Do I have to use to_date() and if so, has anyone done this with bind
variables?
 
I am using bind variables to INSERT the selected rows.  Below is the
code and the table layout.
 
SOURCE DATABASE TABLE (Netezza)
 
nv01()=> \d t_bil_payment_type_codes
                   Table "t_bil_payment_type_codes"
     Attribute     |         Type          | Modifier | Default Value 
-------------------+-----------------------+----------+---------------
 bil_pymt_typ_cde  | character(1)          | not null | 
 bil_pymt_typ_desc | character varying(40) | not null | 
 lst_updt_id       | character varying(40) |          | 
 lst_updt_tstmp    | timestamp             |          | 
Distributed on hash: "bil_pymt_typ_cde"
 
nv01()=> select * from t_bil_payment_type_codes;
 bil_pymt_typ_cde | bil_pymt_typ_desc | lst_updt_id |   lst_updt_tstmp

------------------+-------------------+-------------+-------------------
--
 1                | CASH              | ODSIHR      | 2005-09-08
19:32:38
 2                | MEDICAID          | ODSIHR      | 2005-09-08
19:32:38
 3                | MEDICARE          | ODSIHR      | 2005-09-08
19:32:38
 4                | THIRD PARTY       | ODSIHR      | 2005-09-08
19:32:38
(4 rows)
 
DESTINATION DATABASE TABLE (Oracle)
 
SQL> desc t_bil_payment_type_codes
 Name                                      Null?    Type
 ----------------------------------------- --------
----------------------------
 BIL_PYMT_TYP_CDE                          NOT NULL CHAR(1)
 BIL_PYMT_TYP_DESC                         NOT NULL VARCHAR2(40)
 LST_UPDT_ID                                        VARCHAR2(40)
 LST_UPDT_TSTMP                                     TIMESTAMP(6)
 
SQL> select * from t_bil_payment_type_codes;
 
B BIL_PYMT_TYP_DESC
- ----------------------------------------
LST_UPDT_ID
----------------------------------------
LST_UPDT_TSTMP
------------------------------------------------------------------------
---
1 CASH
ODSIHR
08-SEP-05 07.32.38.000000 PM
 
CODE EXCERPT:
 
    $sqlString = qq{select * from t_bil_payment_type_codes};
    $tblName = "t_bil_payment_type_codes";
 
    unless ($s_sth = $s_dbh->prepare(qq{$s_sqlString})) {
      $MESSAGE = "sub_prepare() - $DBI::errstr";
      $STATUS = $FAILURE;
      sub_exit();
      }
 
    unless ($s_sth->execute()) {
      $MESSAGE = "sub_execute() - $DBI::errstr";
      $STATUS = $FAILURE;
      sub_exit();
      }
 
    unless ($s_arrayref = $s_sth->fetchall_arrayref()) {
      $MESSAGE = "sub_fetchallArrayref() - $DBI::errstr";
      $STATUS = $FAILURE;
      sub_exit();
      }
 
    if ($dbDriver eq "Oracle") {
      $d_sqlString = qq{SELECT   COLUMN_NAME, DATA_TYPE
                      FROM     ALL_TAB_COLUMNS
                      WHERE    TABLE_NAME = UPPER('$tblName')
                      AND      OWNER = UPPER('$schema')
                      ORDER BY COLUMN_ID};
      }
    elsif ($dbDriver eq "ODBC") {
      $d_sqlString = qq{select   column_name, data_type
                      from     all_tab_columns
                      where    table_name = lower('$tblName')
                      and      owner = lower('$schema')
                      order by column_sequence_nbr};
 
    unless ($d_sth = $d_dbh->prepare(qq{$d_sqlString})) {
      $MESSAGE = "sub_prepare() - $DBI::errstr";
      $STATUS = $FAILURE;
      sub_exit();
      }
 
    unless ($d_sth->execute()) {
      $MESSAGE = "sub_execute() - $DBI::errstr";
      $STATUS = $FAILURE;
      sub_exit();
      }
 
    unless ($d_arrayref = $d_sth->fetchall_arrayref()) {
      $MESSAGE = "sub_fetchallArrayref() - $DBI::errstr";
      $STATUS = $FAILURE;
      sub_exit();
      }
 
    foreach $column (@{$d_arrayref}) {
      push (@cols, @{$column});
      }
    $delimCols = join(', ', @cols);
    $bindVars = join ', ', ('?') x @{$d_arrayref};
    $d_sqlString = "insert into " . $tblName . " (" . $delimCols . ")
values" . " (" . $bindVars . ")";

    unless ($d_sth = $d_dbh->prepare(qq{$d_sqlString})) {
      $MESSAGE = "sub_prepare() - $DBI::errstr";
      $STATUS = $FAILURE;
      sub_exit();
      }
 
    foreach $bindVar (@{$s_arrayref}) {
      unless ($d_sth->execute(@$bindVar)) {
        $MESSAGE = "sub_executeBind() - $DBI::errstr";
        $STATUS = $FAILURE;
        sub_exit();
        }
      }
 
Thanks a bunch in advance.
 
Peter

Reply via email to