pro*c 里怎么将select 的返回内容赋值给变量

darkone 2009-10-12 05:03:52
pro*c 里怎么将select 的返回内容赋值给变量

EXEC SQL BEGIN DECLARE SECTION;
char CALLNO[30];
EXEC SQL END DECLARE SECTION;


EXEC SQL SELECT CALLNO INTO :CALLNO FROM out_call;
EXEC SQL COMMIT WORK RELEASE;

printf("CALLNO = %s\n intCALLNO = %d\n",CALLNO,intCALLNO);


打印结果为空,是为啥?
...全文
126 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
darkone 2009-10-14
  • 打赏
  • 举报
回复
EXEC SQL BEGIN DECLARE SECTION;
char CALLNO[30] = ""; // 这里改为varchar 就可以获取了
EXEC SQL END DECLARE SECTION;
wlabing 2009-10-13
  • 打赏
  • 举报
回复
你的查询语句返回的结果可能有多条,要么使用查询条件返回单条结果的查询语句,要么就使用数组接收或使用游标。
XyRbj 2009-10-13
  • 打赏
  • 举报
回复
要不就 where rownum < 2;
XyRbj 2009-10-13
  • 打赏
  • 举报
回复
不好意思。我用我的库文件用习惯了忘了把定义告诉你了
#define SQL_DISPOSE_ROW_NUM sqlca.sqlerrd[1]
#define SQL_DISPOSE_ROW_NUM sqlca.sqlerrd[2]


然后你看一下到底有多少条记录 如果大于1条的话要用5楼的方法 要用游标或数组取
darkone 2009-10-12
  • 打赏
  • 举报
回复
SQL_DISPOSE_ROW_NUM在哪里定义的?编译不过去
darkone 2009-10-12
  • 打赏
  • 举报
回复
谢谢了,先试试看
XyRbj 2009-10-12
  • 打赏
  • 举报
回复
EXEC SQL BEGIN DECLARE SECTION;
char CALLNO[30] = "";
EXEC SQL END DECLARE SECTION;

EXEC SQL SELECT CALLNO INTO :CALLNO FROM out_call;
/*EXEC SQL COMMIT WORK RELEASE; 注释此行 */

printf("Count;[%d]",SQL_DISPOSE_ROW_NUM);//增加此行看看结果

printf("CALLNO = %s\n intCALLNO = %d\n",CALLNO,intCALLNO);

这一段
kisszrq 2009-10-12
  • 打赏
  • 举报
回复
这个查询是一个结果还是多个结果,如果多个结果请使用游标,如果一个结果这句话没什么问题.
1.输出为一个结果的
exec sql begin declare section;
CS_CHAR id[6];
CS_SMALLINT indic;
CS_CHAR pub_name[41];
exec sql end declare section;
exec sql select pub_id into :id indicator :indic
from titles where title
like "%Stress%";
if (indic == -1)
{
printf("\npub_id is null");
}
else
{
exec sql select pub_name into :pub_name
from publishers where pub_id = :id;
printf("\nPublisher: %s", pub_name);
}

2输出为多个结果的
EXEC SQL DECLARE C1 CURSOR FOR
SELECT id, name, dept, job, years, salary, comm FROM staff;
EXEC SQL OPEN c1;
while (SQLCODE == 0)
{
EXEC SQL FETCH c1 INTO :id, :name, :dept, :job, :years, :salary, :comm;
if (SQLCODE == 0)
printf("%4d %12s %10d %10s %2d %8d %8d",
id, name, dept, job, years, salary, comm);
}
EXEC SQL CLOSE c1;

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧