1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-29 13:56:47 +03:00
2018-03-14 17:18:15 +01:00

65 lines
1.6 KiB
Plaintext

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
EXEC SQL INCLUDE ../regression;
static void warn(void)
{
fprintf(stderr, "Warning: At least one column was truncated\n");
}
/* Compatible handling of char array to retrieve varchar field to char array
should be fixed-length, blank-padded, then null-terminated.
Conforms to the ANSI Fixed Character type. */
int main() {
EXEC SQL WHENEVER SQLWARNING do warn();
EXEC SQL WHENEVER SQLERROR SQLPRINT;
const char *ppppp = "XXXXX";
EXEC SQL BEGIN DECLARE SECTION;
char shortstr[5];
char bigstr[11];
short shstr_ind = 0;
short bigstr_ind = 0;
EXEC SQL END DECLARE SECTION;
ECPGdebug(1, stderr);
EXEC SQL CONNECT TO REGRESSDB1;
EXEC SQL CREATE TABLE strdbase (strval varchar(10));
EXEC SQL INSERT INTO strdbase values ('');
EXEC SQL INSERT INTO strdbase values ('AB');
EXEC SQL INSERT INTO strdbase values ('ABCD');
EXEC SQL INSERT INTO strdbase values ('ABCDE');
EXEC SQL INSERT INTO strdbase values ('ABCDEF');
EXEC SQL INSERT INTO strdbase values ('ABCDEFGHIJ');
EXEC SQL declare C cursor for select strval, strval from strdbase;
EXEC SQL OPEN C;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
printf("Full Str. : Short Ind.\n");
while(1) {
strncpy(shortstr, ppppp, sizeof shortstr);
memset(bigstr, 0, sizeof bigstr);
EXEC SQL FETCH C into :bigstr :bigstr_ind, :shortstr :shstr_ind;
printf("\"%s\": \"%s\" %d\n", bigstr, shortstr, shstr_ind);
}
EXEC SQL close cstr;
EXEC SQL DROP TABLE strdbase;
printf("\nGOOD-BYE!!\n\n");
EXEC SQL COMMIT WORK;
EXEC SQL DISCONNECT ALL;
return 0;
}