SELECT 12345,'TEST STRING' FROM dual;
#include <ctype.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#define ORA_PARAM " ORACLE_LOGIN/ORACLE_PASS@ORACLE_SID " /* */
EXEC SQL BEGIN DECLARE SECTION; /* END DECLARE SECTION , Oracle*/
static int ora_i; /* INT */
static VARCHAR ora_str[20]; /* CHAR */
static VARCHAR connect_str[100]; /* */
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA; /* SQLCA ( ) */
int main( int argc, char* argv[] )
{
char str[21]; /* CHAR */
memset(str,0,sizeof(str)); /* */
connect_str.len = sprintf(connect_str.arr,ORA_PARAM); /* */
EXEC SQL CONNECT :connect_str; /**/
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL SELECT 12345,'TEST STRING' INTO :ora_i,:ora_str FROM dual; /* , */
sprintf( str, "%*.*s", ora_str.len, ora_str.len, ora_str.arr ); /* CHAR C */
printf("\ni=[%d], str=[%s]\n", ora_i, str ); /* */
return 0;
} /* end of main() */
/opt/oracle/product/11gR1/db/bin/proc CODE=ANSI_C include=/opt/oracle/product/11gR1/db/lib include=/usr/lib/gcc/i586-suse-linux/4.3/include/ ireclen=4800 oreclen=4800 select_error=no release_cursor=no hold_cursor=yes ltype=none cpp_suffix=c USERID= ORACLE_LOGIN/ORACLE_PASS@ORACLE_SID SQLCHECK=SEMANTICS iname=test_ora.pc;
cc test_ora.c -L/opt/oracle/product/11gR1/db/lib /opt/oracle/product/11gR1/db/lib/libclntsh.so /opt/oracle/product/11gR1/db/lib/libsqlplus.a -o test_ora;
vmotp$ ./test_ora
i=[12345], str=[TEST STRING]
vmotp$
Source: https://habr.com/ru/post/90556/
All Articles