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

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