Skip to content

Instantly share code, notes, and snippets.

@bucketzxm
Created December 20, 2015 15:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bucketzxm/e86c8475fc33982b8b7a to your computer and use it in GitHub Desktop.
Save bucketzxm/e86c8475fc33982b8b7a to your computer and use it in GitHub Desktop.
some example for postgresql embeded-sql
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define True 1
void db_connect()
{
EXEC SQL CONNECT TO db_test@localhost:5432 USER postgres USING password;
}
void db_test()
{
EXEC SQL BEGIN DECLARE SECTION;
char dbname[1024];
EXEC SQL END DECLARE SECTION;
EXEC SQL SELECT current_database() INTO :dbname;
printf("current_database = %s \n", dbname);
}
void db_disconnect()
{
EXEC SQL DISCONNECT ALL;
printf("Disconnect Database\n");
}
void ChangeDNO()
{
EXEC SQL BEGIN DECLARE SECTION;
int maxage = 0;
char xh[21], xm[21], sex[4];
char newxh[21];
EXEC SQL END DECLARE SECTION;
printf("Input Maxage: ");
scanf("%d", &maxage);
getchar();
// EXEC SQL SELECT xh,xm INTO :xh, :xm FROM s WHERE xb='男';
EXEC SQL DECLARE ex CURSOR FOR
SELECT xh, xm, xb FROM s
WHERE xb = '男' FOR UPDATE OF xh;
EXEC SQL OPEN ex;
while(True)
{
EXEC SQL FETCH FROM ex INTO :xh,:xm,:sex;
//if (SQLCA.SQLSTATE == '02000')
// break;
//if (SQLCA.SQLSTATE!='00000')
// break;
char yn = 'N';
printf("xh: %s, xm: %s, sex: %s\n", xh, xm, sex);
printf("UPDATE 学号?\n");
yn = getchar();
if (yn =='y' || yn == 'Y')
{
printf("Input NEW xh: ");
scanf("%s", newxh);
getchar();
EXEC SQL UPDATE s SET xh=:newxh WHERE CURRENT OF ex;
// EXEC SQL COMMIT;
}else{
break;
}
// EXEC SQL FETCH NEXT FROM ex INTO :xh,:xm,:sex;
}
EXEC SQL COMMIT;
}
int main(){
db_connect();
db_test();
ChangeDNO();
db_disconnect();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment