Hi  Gurus,

I am facing a problem.

I have a table with the following description:

SQL> desc wb_pseudo_fmly;
 Name                                      Null?    Type
 ----------------------------------------- --------
----------------------------
 SPPLR_NUM                                 NOT NULL NVARCHAR2(10)
 DUNS_ID                                            NVARCHAR2(12)
 SPPLR_NAME                                         NVARCHAR2(35)
 REASON                                    NOT NULL NVARCHAR2(80)
 CREATED_BY                                NOT NULL NVARCHAR2(50)
 CREATED_DT                                NOT NULL DATE

I am using DBI/DBD for Oracle8.1.7. I am running the following query. I
am basically preparing(using place holders) an SQL statement and then
executing it.
**********************************************************************
my($query) = "insert into wb_pseudo_fmly ".
                 "(DUNS_ID,SPPLR_NUM,".
                 "SPPLR_NAME,REASON,CREATED_BY,".
                 "CREATED_DT) values(?,?,?,?,?,?)";

        eval {
            $::DBH->prepare($query);
            $::DBH->execute("N'$duns_id'","N'$sup_num'",
               "N'$sup_name'","N'$reason'","N'MKTG'","'$::CUR_DATE'");
        };
**********************************************************************

I get the following error:
DBD::Oracle::st execute failed: ORA-12704: character set mismatch (DBD
ERROR: OCIStmtExecute)

Can someone please point me where I am wrong?? In the execute statement
I have given "N" because my datatypes are NVARCHAR2. Do I need to give N
or the DBD understands that automatically.

Do I need to write the query somewhat differently.

Please help.

Thanks,
Nilanjan



Reply via email to