- 论坛徽章:
- 0
|
我帮你修改下了,不过你的程序问题比较多。
EXEC SQL INCLUDE sqlca.h ;
#include <stdio.h>
#include <string.h>
void get_str_out(char *myid,char *mypwd,long *mytype,char *myname )
{
EXEC SQL BEGIN DECLARE SECTION ;
char temp_id = NULL ;
char getid[20] ;
char getpwd[20] ;
long gettype ;
char getname[20] ;
EXEC SQL END DECLARE SECTION ;
//strcpy(temp_id, myid) ;
strcpy(getid,myid);
printf("myid = %s, getid = %s\n", myid, getid) ;
EXEC SQL DECLARE get_str cursor for
select pwd, type, name
/* into $getpwd, $*gettype, $getname */
into :getpwd, :gettype, :getname
from operaform
where id = :getid ;
printf("1getid = %s.\n", getid) ;
EXEC SQL OPEN get_str ;
printf("2getid = %s.\n", getid) ;
if (SQLCODE)
{
printf("Failed to open cursor.\n") ;
return ;
}
EXEC SQL FETCH get_str ;
printf("3getid = %s %d.\n", getid,gettype) ;
if (SQLCODE == 0)
{
printf("ID = %s, pwd = %s, type = %d, name = %s\n", getid, getpwd, gettype, getname) ;
strcpy(mypwd,getpwd);
*mytype = gettype;
strcpy(myname,getname);
EXEC SQL CLOSE get_str ;
printf("4getid = %s.%d\n", getid,mytype) ;
EXEC SQL FREE get_str ;
printf("5getid = %s.\n", getid) ;
return ;
}
else if (SQLCODE == 100)
{
printf("No such user.\n") ;
EXEC SQL CLOSE get_str ;
EXEC SQL FREE get_str ;
return ;
}
else
{
printf("Failed to fetch cursor.\n") ;
EXEC SQL CLOSE get_str ;
EXEC SQL FREE get_str ;
}
//strcpy(myid, temp_id) ;
return ;
}
void main()
{
char myid[20] = "s001" ;
char mypwd[20] ;
char myname[20] ;
long mytype ;
memset(mypwd,0x00,sizeof(mypwd));
memset(myname,0x00,sizeof(myname));
/* $char path[] = "/usr/linkang/informix_database/operaform" ; */
EXEC SQL DATABASE test;
if (SQLCODE != 0)
{
printf("Failed to open database.\n") ;
return ;
}
printf("1id = %s, pwd = %s,name=%s\n", myid, mypwd, myname) ;
get_str_out(myid,mypwd,&mytype,myname) ;
printf("1ID = %s, PWD = %s, TYPE = %d, NAME = %s\n", myid, mypwd, mytype, myname) ;
EXEC SQL CLOSE DATABASE ;
if (SQLCODE != 0)
{
printf("Failed to close database.\n") ;
return ;
}
return ;
} |
|