Below is the error message I get:
Below are the modules I use in the script:
Below is the output from perl -V:
Here is the connection code:
The prepare and execute code snippets exist within a subroutine that is called for every record processed, but is only run every X number of records processed.
Here is the prepare code:
Here is the execute part:
Does anyone know why I am getting the error message?
Any help is appreciated. Thank you.
Michael Libeson
Code:
DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near '@P1'. (SQL-42000)
[Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (SQL-42000)(DBD: st_execute/SQLExecute err=-1) at perl.pl line 7263, <SOURCE> line 420.
Below are the modules I use in the script:
Code:
use strict;
use Socket;
use Tk;
use Tk::ProgressBar;
use DBI;
use Parallel::ForkManager;
use Date::Manip;
Below is the output from perl -V:
Code:
Summary of my perl5 (revision 5 version 8 subversion 6) configuration:
Platform:
osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cl', ccflags ='-nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -
DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DPERL_IMPLICIT_CONTEXT -DPERL_IMPL
ICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX',
optimize='-MD -Zi -DNDEBUG -O1',
cppflags='-DWIN32'
ccversion='', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C:
\Perl\lib\CORE" -machine:x86'
libpth=\lib
libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_
32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib
perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comd
lg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib
ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib
libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl58.lib
gnulibc_version='undef'
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -
libpath:"C:\Perl\lib\CORE" -machine:x86'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
Locally applied patches:
ActivePerl Build 811
21540 Fix backward-compatibility issues in if.pm
23565 Wrong MANIFEST.SKIP
Built under MSWin32
Compiled at Dec 13 2004 09:52:01
@INC:
C:/Perl/lib
C:/Perl/site/lib
.
Here is the connection code:
Code:
my $DSN = 'driver=' . $dbdriver . ';Server=' . $main::ds . ';uid=' . $main::usr . ';pwd=' . $main::pass . ';';
$main::dbh = DBI->connect("DBI:ODBC:$DSN", { AutoCommit => 1 }) or die "$DBI::errstr\n";
The prepare and execute code snippets exist within a subroutine that is called for every record processed, but is only run every X number of records processed.
Here is the prepare code:
Code:
$sql = 'EXECUTE proc_RECINSERT(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
$sh = $main::dbh->prepare($sql);
Here is the execute part:
Code:
foreach my $s (@main::recbufferstr) {
my @ps = (split(/#=#=#/,$s));
$sh->execute(q{$ps[0]},q{$ps[1]},$ps[2],$ps[3],$ps[4],$ps[5],$ps[6],$ps[7],$ps[8],$ps[9],$ps[10],$ps[11],$ps[12],$ps[13],$ps[14],$ps[15],$ps[16],$ps[17],$ps[18],$ps[19],$ps[20],$ps[21],$ps[22],$ps[23],$ps[24],$ps[25],$ps[26],$ps[27],$ps[28]);
# $sh->execute(@ps);
print STDOUT "[$s]\n";sleep(5);
}
Does anyone know why I am getting the error message?
Any help is appreciated. Thank you.
Michael Libeson