高分求助!proc查询的一个问题

einest 2003-08-25 11:26:23
#define LENGTH 40

VARCHAR my_id[LENGTH];
char temp_char[100];
printf("\nPlease Enter id (default: EI): ");
gets(temp_char);
strncpy((char *) my_id.arr, temp_char, LENGTH);
if (strlen(temp_char)<1)
strncpy((char *) my_id.arr, "EI",LENGTH);
my_id.len=strlen((char *) my_id.arr);

EXEC SQL DECLARE bucket_cursor CURSOR FOR SELECT × FROM mytable WHERE ID=:my_id;

然而一条记录也查不到。如果改成WHERE ID='EI'就可以查到了
...全文
41 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bihu 2003-08-25
  • 打赏
  • 举报
回复
RTRIM(LTRIM(ID))= :my_id;
bihu 2003-08-25
  • 打赏
  • 举报
回复
RTRIM(LTRIM(ID))= :my_id;
onejune4450 2003-08-25
  • 打赏
  • 举报
回复
#define LENGTH 40

VARCHAR my_id[LENGTH];
char temp_char[100];
printf("\nPlease Enter id (default: EI): ");
gets(temp_char);
if (strlen(temp_char)<1)
strcpy(temp_char,"EI");

strncpy((char *) my_id.arr, temp_char, strlen(temp_char));
my_id.len=strlen((char *) my_id.arr);

如果ID 的类型是varchar2,
EXEC SQL DECLARE bucket_cursor CURSOR FOR SELECT * FROM mytable WHERE ID=:my_id;
如果id 的类型是CHAR 用 WHERE rtrim(ID) = :my_id;
einest 2003-08-25
  • 打赏
  • 举报
回复
问题是ID的长度是不确定的啊
incats 2003-08-25
  • 打赏
  • 举报
回复
不改程序的测试:
输入40个字符后, 再敲回车.
onejune4450 2003-08-25
  • 打赏
  • 举报
回复
试试!
strncpy((char *) my_id.arr, temp_char, strlen(temp_char));
if (strlen(temp_char)<1)
strncpy((char *) my_id.arr, "EI",2);

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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