Yurttas/PL/DBL/oracle/F/03/Company-B/Works-def.pc

From ZCubes Wiki
Jump to navigation Jump to search
 1/*
 2REM
 3REM
 4REM Works-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: Works");
29
30  EXEC SQL
31    CREATE TABLE Works (employeename VARCHAR2(16) NOT NULL,
32                        companyname VARCHAR2(24) NOT NULL,
33                        salary INTEGER,
34           PRIMARY KEY (employeename, companyname),
35           FOREIGN KEY (employeename) REFERENCES Employee(employeename),
36           FOREIGN KEY (companyname) REFERENCES Company(companyname));
37
38  EXEC SQL COMMIT WORK RELEASE;
39
40  exit(0);
41}
42
43
44void sql_error(char* msg) {
45  char err_msg[128];
46  int buflen, msglen;
47
48  EXEC SQL WHENEVER SQLERROR CONTINUE;
49
50  printf("%s \n", msg);
51  buflen = sizeof(err_msg);
52  sqlglm(err_msg, &buflen, &msglen);
53  printf("%.*s \n", msglen, err_msg);
54  exit(1);
55}
56
57
58void connect_to_oracle() {
59  /* get your username/passwd from "user_pwd.txt" file */
60
61  FILE *in_file;
62  in_file = fopen("user_pwd.txt", "r");
63  fscanf(in_file, "%s", u_name);
64  fscanf(in_file, "%s", pwd);
65
66  strncpy((char *) username.arr, u_name, UNAME_LEN);
67  username.len = strlen((char *) username.arr);
68
69  strncpy((char *) password.arr, pwd, PWD_LEN);
70  password.len = strlen((char *) password.arr);
71
72  EXEC SQL WHENEVER SQLERROR DO sql_error ("ORACLE error-- ");
73  EXEC SQL CONNECT :username IDENTIFIED BY :password;
74
75  printf("connected to oracle - \n");
76}