Yurttas/PL/DBL/oracle/F/03/Movie/StarsIn-def.pc

From ZCubes Wiki
Jump to navigation Jump to search
 1/*
 2REM
 3REM
 4REM StarsIn-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: StarsIn");
29
30  EXEC SQL
31    CREATE TABLE StarsIn(title VARCHAR2(24) NOT NULL,
32                         year NUMBER(4) NOT NULL,
33                         name VARCHAR2(24) NOT NULL,
34             PRIMARY KEY(title, year, name),
35             FOREIGN KEY(title, year) REFERENCES Movie(title, year),
36             FOREIGN KEY(name) REFERENCES MovieStar(name));
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}