Yurttas/PL/DBL/oracle/F/03/PC/PC-def.pc

From ZCubes Wiki
Jump to navigation Jump to search
 1/*
 2REM
 3REM
 4REM PC-def.pc
 5REM
 6REM
 7*/
 8
 9#include <stdio.h>
10#include <sqlca.h>
11
12#define UNAME_LEN 32
13#define PWD_LEN   16
14
15VARCHAR username[UNAME_LEN]; /* VARCHAR is an Oracle-supplied struct */
16VARCHAR password[PWD_LEN];   /* varchar can be in lower case also. */
17
18char u_name[UNAME_LEN];
19char pwd[PWD_LEN];
20
21void connect_to_oracle();
22void sql_error();
23
24void main(int argc, char* argv[]) {
25  connect_to_oracle();
26
27  EXEC SQL
28    WHENEVER SQLERROR DO sql_error("Error in CREATE_table: PC");
29
30  EXEC SQL
31    CREATE TABLE PC (model VARCHAR2(6) NOT NULL,
32		     speed NUMBER(4) NOT NULL,
33		     ram NUMBER(2) NOT NULL,
34		     hd NUMBER(3,1) NOT NULL,
35		     cd VARCHAR2(4) NOT NULL,
36		     price NUMBER(4) NOT NULL,
37        PRIMARY KEY (model));
38
39  EXEC SQL COMMIT WORK RELEASE;
40
41  exit(0);
42}
43
44
45void sql_error(char* msg) {
46  char err_msg[128];
47  int buflen, msglen;
48
49  EXEC SQL WHENEVER SQLERROR CONTINUE;
50
51  printf("%s \n", msg);
52  buflen = sizeof(err_msg);
53  sqlglm(err_msg, &buflen, &msglen);
54  printf("%.*s \n", msglen, err_msg);
55  exit(1);
56}
57
58
59void connect_to_oracle() {
60  /* get your username/passwd from "user_pwd.txt" file */
61
62  FILE *in_file;
63  in_file = fopen("user_pwd.txt", "r");
64  fscanf(in_file, "%s", u_name);
65  fscanf(in_file, "%s", pwd);
66
67  strncpy((char *) username.arr, u_name, UNAME_LEN);
68  username.len = strlen((char *) username.arr);
69
70  strncpy((char *) password.arr, pwd, PWD_LEN);
71  password.len = strlen((char *) password.arr);
72
73  EXEC SQL WHENEVER SQLERROR DO sql_error ("ORACLE error-- ");
74  EXEC SQL CONNECT :username IDENTIFIED BY :password;
75
76  printf("application is done\n");
77}