##!/usr/bin/perl -w use strict; # ------------------------------------------------------------------------ use DBI; print "Program $0 now starting \n"; # ################### Build DSN Less MSSQL Connection Parameters #################################################### # my $DSN = 'driver={SQL Server};Server=markchar; database=orders; uid=orderguy; pwd=element;'; my $dbh = DBI->connect() or die "Can't connect to databese ", DBI::errstr," \n"; ################################################################################################## print "We have connected successfully to the Database \n"; $dbh->{RaiseError} = 1; # let DBI handle the call to die eval { $dbh->do("drop table PERL_DBD_TEST"); $dbh->do("create table PERL_DBD_TEST ( [OrderID] [int] IDENTITY (1, 1) NOT NULL , [CustomerID] [nchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [EmployeeID] [int] NULL , [OrderDate] [datetime] NULL , [RequiredDate] [datetime] NULL , [ShippedDate] [datetime] NULL , [ShipVia] [int] NULL , [Freight] [money] NULL , [ShipName] [nvarchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ShipAddress] [nvarchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ShipCity] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ShipRegion] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ShipPostalCode] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ShipCountry] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL )"); }; # Jeff... IF you comment this out, you should see the following error # $dbh->{odbc_default_bind_type} = 12; # SQL_VARCHAR for # May 18, 2003 compatibility with older DBD::ODBC # $dbh->{odbc_default_bind_type} = 0; # **DEFAULT won't work here*** # DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver]Invalid character value for cast specification (SQL-22018)(DBD: st_execute/SQLExecute err=-1) # DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver]Invalid character value for cast specification (SQL-22018)(DBD: st_execute/SQLExecute err=-1) # # # # # # # # # Prepare the Insert into Order Table Statement # # # # # # # # # # # my $insert_order_stm = $dbh->prepare ( " INSERT INTO PERL_DBD_TEST ( CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)" ); # $dbh->{odbc_default_bind_type} = 0; # SQL_VARCHAR for $insert_order_stm->bind_param(1, 0001); $insert_order_stm->bind_param(2, 9); $insert_order_stm->bind_param(3, "{d '2003-05-16'}" ); $insert_order_stm->bind_param(4, "{d '2003-06-25'}" ); $insert_order_stm->bind_param(5, "{d '2003-06-22'}" ); $insert_order_stm->bind_param(6, 1); $insert_order_stm->bind_param(7, "Cust1"); $insert_order_stm->bind_param(8, "addr 1"); $insert_order_stm->bind_param(9, "city"); $insert_order_stm->bind_param(10, "region"); $insert_order_stm->bind_param(11, "999"); $insert_order_stm->bind_param(12, "USA"); my $rc = $insert_order_stm->execute; print "Last SQL Return Code from insert to Order Table = $rc \n" ; print "Program $0 now ending \n"; $dbh->disconnect;