--存储过程获得相应的:ename,job
create or replace procedure getinfo(empid in emp.empno%type,infostr out varchar2)
as
name emp.ename%type:='no_name';
ejob emp.job%type:='no_job';
begin
select ename,job into name,ejob from emp where empno=empid;
infostr:=name||','||ejob;
--dbms_output.put_line('infostr='||infostr);
null;
end getinfo;
--在sql*plus中调试通过
SQL> declare
  2  info varchar2(20):='noinfo';
  3  begin
  4  getinfo(7369,info);
  5  dbms_output.put_line(info);
  6  end;
  7  /
SMITH,CLERKPL/SQL 过程已成功完成。//在应用程序中
void sqlplay(void)
{
exec sql begin declare section;
int empid=7369;
varchar info[20];
exec sql end declare section;
//exec sql select ename into :info from emp where empno=:empid;//用此语句正常
EXEC SQL CALL getinfo(:empid,:info); //调用存储过程获得ename,job时出错
printf("len=%d\n",info.len);
info.arr[info.len]='\0';
puts(info.arr);
printf("\n");
}
//系统文件配置:varchar=yes
//错误如下:
Enter username:scott
Enter password:scottpwd
ORA-01458: 内部变量字符串长度无效

  len=52428
  Press any key to continue*************
那一位高手能解决???!!!