]> andersk Git - moira.git/commitdiff
Use TO_CHAR and TO_NUMBER to handle numbers as strings, to get around
authorzacheiss <zacheiss>
Tue, 19 Oct 2004 03:43:59 +0000 (03:43 +0000)
committerzacheiss <zacheiss>
Tue, 19 Oct 2004 03:43:59 +0000 (03:43 +0000)
Pro*C not handling integer types larger than 32 bits.

backup/db2bkup.awk
backup/db2rest.awk

index eea66b7aef4641376b170e09526c907f2b1d4185..07d2dbc3f8a135e31d45961cfb258d194f6ad786 100644 (file)
@@ -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];
index 07e637e9e17a1041f41ee5d05952132e3ffacd4d..1f8a4a9ef6dcb6e0d987c0817c331372df400343 100644 (file)
@@ -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];
                }
This page took 1.230841 seconds and 5 git commands to generate.