void search(PGconn *conn)
{
int i, j, kind;
const char *psql;
char search[100], trash[80], search_value[100] = "\0";
char sql[100] = ""DECLARE search_sql CURSOR FOR select * from kuetbord where";
printf("검색 종류를 선택해주세요.\n");
printf("1.이름\t2.제목\t3.내용\n");
scanf("%d", &kind);
gets(trash);
printf("검색어를 입력해주세요\n");
scanf("%s", search);
gets(trash);
strcat(search_value, " %");
strcat(search_value, search);
strcat(search_value, "%"");
res = PQexec(conn, "BEGIN");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr,"BEGIN 명령이 실행되지 않았습니다\n");
PQclear(res);
PQfinish(conn);
exit(1);
}
PQclear(res);
switch (kind)
{
case 1:
{
strcat(sql," b_name like");
strcat(sql, search_value);
break;
}
case 2:
{
strcat(sql," b_title like");
strcat(sql, search_value);
break;
}
case 3:
{
strcat(sql," b_content like");
strcat(sql, search_value);
break;
}
default:
{
printf("잘못입력 하셨습니다 다시 입력해주세요\n");
start_menue();
break;
}
}
psql = sql;
printf("%s", psql);
res = PQexec(conn, psql);
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr,"DECLARE 명령이 실행되지 않았습니다\n");
PQclear(res);
PQfinish(conn);
exit(1);
}
PQclear(res);
res = PQexec(conn, "FETCH ALL IN search_sql");
if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr,"FETCH 명령이 실행되지 않았습니다\n");
PQclear(res);
PQfinish(conn);
exit(1);
}
printf("%d 개의 내용이 검색 되었습니다\n", PQntuples(res));
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr,"SQL문이 실행되지 않았습니다\n");
}
for (j = 0; j < PQnfields(res); j++)
{
printf("%/10s", PQfname(res,j));
}
printf("\n");
for (i = 0; i < PQntuples(res); i++)
{
for (j = 0; j < PQnfields(res); j++)
{
printf("%/10s", PQgetvalue(res, i, j));
}
printf("\n");
printf("*********************************************************\n");
}
PQclear(res);
res = PQexec(conn, "CLOSE search_sql");
PQclear(res);
res = PQexec(conn, "COMMIT");
PQclear(res);
PQfinish(conn);
}
윗쪽에 보시면 psql 이라는 변수에값을
"DECLARE search_sql CURSOR FOR select * from kuetbord where b_name like %text%" 라고 값을주고 res = PQexec(conn, psql) 이런식으로 함수를 정의 해보왔는
데 에러가 나오던데요.. PQexec함수의 원형은 PQexec(conn, const char *ptr)인데
왜 실행이 안돼는지요....이해가 너무 안돼요 변수명을 써주면 안돼는 이유가 뭘까요. 알려 주세요 감사합니다.
|