From 043735683501f5b8662344985ba715c6b1b11179 Mon Sep 17 00:00:00 2001 From: zacheiss Date: Tue, 19 Oct 2004 03:43:59 +0000 Subject: [PATCH] Use TO_CHAR and TO_NUMBER to handle numbers as strings, to get around Pro*C not handling integer types larger than 32 bits. --- backup/db2bkup.awk | 6 ++++-- backup/db2rest.awk | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/backup/db2bkup.awk b/backup/db2bkup.awk index eea66b7a..07d2dbc3 100644 --- a/backup/db2bkup.awk +++ b/backup/db2bkup.awk @@ -41,7 +41,7 @@ NF>=2 { vname[count] = $1; printf " /* %s */\n", $0; if ($2 ~ /INTEGER/ || $2 ~ /SMALLINT/ || $2 ~ /INTEGER1/) { - printf " int\tt_%s;\n", vname[count]; + printf " char\tt_%s[39];\n", vname[count]; vtype[count]="int"; } else if ($2 ~ /CHAR\([0-9]*\)/) { t = split($2, temp, "("); @@ -72,6 +72,8 @@ NF>=2 { } if(vtype[i] ~ /date/) { printf " TO_CHAR(%s, 'DD-mon-YYYY HH24:MI:SS')", vname[i]; + } else if(vtype[i] ~ /int/) { + printf " TO_CHAR(%s)", vname[i]; } else printf " %s", vname[i]; } printf " FROM %s;\n", tablename; @@ -86,7 +88,7 @@ NF>=2 { printf " if (sqlca.sqlcode != 0)\n break;\n"; for (i = 0; i < count; i++) { if (i != 0) print " dump_sep(f);"; - if (vtype[i] ~ /str/ || vtype[i] ~ /date/) { + if (vtype[i] ~ /str/ || vtype[i] ~ /date/ || vtype[i] ~ /int/) { printf " dump_str(f, endtrim(t_%s));\n", vname[i]; } else { printf " dump_%s(f, t_%s);\n", vtype[i], vname[i]; diff --git a/backup/db2rest.awk b/backup/db2rest.awk index 07e637e9..1f8a4a9e 100644 --- a/backup/db2rest.awk +++ b/backup/db2rest.awk @@ -42,7 +42,7 @@ NF >= 2 { vname[count] = $1; printf " /* %s */\n", $0; if ($2 ~ /INTEGER/ || $2 ~ /SMALLINT/ || $2 ~ /INTEGER1/) { - printf " int\tt_%s;\n", vname[count]; + printf " char\tt_%s[39];\n", vname[count]; vtype[count]="int"; } else if ($2 ~ /CHAR\([0-9]*\)/) { t = split($2, temp, "("); @@ -71,7 +71,7 @@ NF >= 2 { for (i = 0; i < count; i++) { if (i != 0) print " parse_sep(f);"; if (vtype[i] ~ /int/) { - printf(" t_%s = parse_int(f);\n", vname[i]); + printf(" parse_str(f, t_%s, 39);\n", vname[i]); } else if (vtype[i] ~ /date/) { printf " parse_str(f, t_%s, 26);\n", vname[i]; } else { @@ -92,7 +92,7 @@ NF >= 2 { if (vtype[i] ~ /date/) { printf " TO_DATE(NVL(:t_%s,TO_CHAR(SYSDATE, 'DD_mon-YYYY HH24:MI:SS')), 'DD-mon-YYYY HH24:MI:SS')", vname[i]; } else if(vtype[i] ~ /int/) { - printf " :t_%s", vname[i]; + printf " TO_NUMBER(:t_%s)", vname[i]; } else { printf " NVL(:t_%s,CHR(0))", vname[i]; } -- 2.45.2