shell向oracle插记录 小问题送分了,谢谢

又是违规昵称 2009-03-31 01:44:04
#!/bin/sh
$id = "aaa"
$name = "bb cc dd"
sqlplus scott/tiger<<EOF
insert into test values($id,$name);
commit;
exit
EOF

因为$name中有空格,插入的时候总是提示失败,因为它被解析成了
insert into test values(aaa, bb cc dd);
但只有这样的才能在oracle中使用:
insert into test values(aaa, 'bb cc dd');

这个问题怎么解决哦,谢谢
...全文
151 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
又是违规昵称 2009-03-31
  • 打赏
  • 举报
回复
分别在itpub, csdn, chinaunxi发贴,晚上回家,发现三处都给出了正确答案
http://www.chinaunix.net/index.php?uid=20746023&url=http://bbs.chinaunix.net/viewthread.php?tid=1417055

谢谢各位
YNCMCHY 2009-03-31
  • 打赏
  • 举报
回复
学习!
aaajj 2009-03-31
  • 打赏
  • 举报
回复
#!/bin/sh 
id ="'aaa'"
name ="'bb cc dd'"
sqlplus scott/tiger < <EOF
insert into test values($id,$name);
commit;
exit
EOF


再改一下,现在就可以了
aaajj 2009-03-31
  • 打赏
  • 举报
回复
#!/bin/sh 
$id = "'aaa'"
$name = "'bb cc dd'"
sqlplus scott/tiger < <EOF
insert into test values($id,$name);
commit;
exit
EOF


这样就可以了
CrazyJeff_Liu 2009-03-31
  • 打赏
  • 举报
回复
$id = "'aaa'"
$name = "'bb cc dd'"

这么的,试试呢?
又是违规昵称 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 CrazyJeff_Liu 的回复:]
试试指定字段呢

insert into aa(id,  name) values("aa", "bb cc dd");
[/Quote]

指不指定字段没有区别,表本来就只有两个字段
双引号的方式本身就通不过,我2楼就贴过测试了

到oracle端的时候需要是这种情况才可以
SQL> insert into test values('aa', 'bb cc dd');

1 row created.
CrazyJeff_Liu 2009-03-31
  • 打赏
  • 举报
回复
试试指定字段呢

insert into aa(id, name) values("aa", "bb cc dd");
CrazyJeff_Liu 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lpc19598188 的回复:]
双引号和单引号都试过,
双引号会报错,单引号会屏蔽变量$name

SQL> insert into test values("aa","bb cc dd");
insert into test values("aa","bb cc dd")
*
ERROR at line 1:
ORA-00984: column not allowed here
[/Quote]

看不出那的问题了
又是违规昵称 2009-03-31
  • 打赏
  • 举报
回复
up~~~~~~~~~
CrazyJeff_Liu 2009-03-31
  • 打赏
  • 举报
回复
哈哈,看错了
CrazyJeff_Liu 2009-03-31
  • 打赏
  • 举报
回复
insert into test values("$id","$name");
改为、
insert into test values($id,"$name");

又是违规昵称 2009-03-31
  • 打赏
  • 举报
回复
create table test(
id varchar2(10),
name varchar2(10)
);
CrazyJeff_Liu 2009-03-31
  • 打赏
  • 举报
回复
把你的test表结构贴上来
CrazyJeff_Liu 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sailing0123 的回复:]
insert into test values("$id","$name");

加个双引号试试?
[/Quote]

正解
又是违规昵称 2009-03-31
  • 打赏
  • 举报
回复
双引号和单引号都试过,
双引号会报错,单引号会屏蔽变量$name

SQL> insert into test values("aa","bb cc dd");
insert into test values("aa","bb cc dd")
*
ERROR at line 1:
ORA-00984: column not allowed here
sailing0123 2009-03-31
  • 打赏
  • 举报
回复
insert into test values("$id","$name");

加个双引号试试?

1,544

社区成员

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

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