免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3186 | 回复: 6
打印 上一主题 下一主题

一个简单的调用插入sql的语句,为什么记录插入不成功?请指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-20 09:59 |只看该作者 |倒序浏览
sybase: ASE 12.0
操作系统: AIX
表结构:
create table lv_control
(
  devno         char(10) not null,
  devdate         char(  not null,
  devtime         char(6)  not null,
  acno           char(30)  not null,
  type           char(4)   not null,
  limitamt      char(20)           ,
  useamt        char(20)           ,
  acur          char(4)           ,
  remark1       char(30)          ,
  remark2       char(30)          ,
  remark3       char(30)     
)
create index index_acnotype on lv_control(acno,type)

sql语句:EXEC SQL INSERT lv_control VALUES ("8000000001", "20080808", "100101", "775877587758", "7103", "28000.00", "0.00", "0","","","";

报错:sqlcode=[-128],errinfo=[The name '8000000001' is illegal in this context. Only c
onstants, constant expressions, or variables allowed here.  Column names are ill
egal.

但是 我用脚本 或者 直接sql语句 是可以把记录插进去的。 请高人指点。谢谢

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
2 [报告]
发表于 2007-09-20 10:53 |只看该作者
字符串改用单引号

论坛徽章:
0
3 [报告]
发表于 2007-09-20 11:26 |只看该作者
晕啊,谢谢楼上提醒。
EXEC SQL BEGIN TRANSACTION;
        /*        EXEC SQL INSERT lv_control VALUES (:amt_control);*/
                 EXEC SQL INSERT lv_control VALUES ('8000000001', '20080808', '100101', '775877587758', '7103', '28000.00', '0.00', '0','','','');

                if ( sqlca.sqlcode != 0 )                       /* 如果插入数据库失败*/
          {
                   printf("sqlcode=[%ld],errinfo=[%s]\n", sqlca.sqlcode, (char *)sqlca.sqlerrm.sqlerrmc);
                   EXEC SQL ROLLBACK TRANSACTION;
                    EXEC SQL DISCONNECT DEFAULT;
                   return -7;
          }               
          printf("插入记录sqlcode=[%d]\n", sqlca.sqlcode);
          EXEC SQL COMMIT TRANSACTION;       


打出来的日志:插入记录sqlcode=[0]

但是数据库里确实没有插进记录。

程序后面也没再有其他事务了。

论坛徽章:
0
4 [报告]
发表于 2007-09-20 12:00 |只看该作者
通过执行脚本 可以将数据插进去
1> begin transaction
2> INSERT lv_control VALUES ('8000000001', '20080808', '100101', '7758775877
58', '7103', '28000.00', '0.00', '0','','','')
3> commit transaction
4> go
(1 row affected)
1> select * from lv_control
2> go
devno      devdate  devtime acno                           type
         limitamt             useamt               acur
         remark1                        remark2
         remark3
---------- -------- ------- ------------------------------ ----
        -------------------- -------------------- ----
        ------------------------------ ------------------------------
        ------------------------------
8000000001 20080808 100101  775877587758                   7103
         28000.00             0.00                 0


但通过嵌入SQL 就插不进去,高手请指教啊

论坛徽章:
0
5 [报告]
发表于 2007-09-20 12:01 |只看该作者
在线等。。。。。。。。

论坛徽章:
0
6 [报告]
发表于 2007-09-20 14:38 |只看该作者
问题 解决了, 加了个EXEC SQL COMMIT;就解决了,不过这里人气不旺啊。 或许我提的问题太弱智了吧

论坛徽章:
0
7 [报告]
发表于 2007-09-20 17:49 |只看该作者

回复 #6 lvchh 的帖子

唉,可能是我们问的问题在人家看来太简单了……我刚才发了个帖子也没人回。这里是高手们交流的地方,斑竹不是发个帖子叫提问的智慧吗~可能对他们来说,这些都是小儿科,见的多了,不是经典的问题就不回答,但是对我们来说,我搜百度搜了一天,问同事问了N次,技术支持也解决不了。唉,这个世界留给新手的生存空间太小了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP