请问怎么在 shell 与plsql 语句实现交互的效果呢?tks

[复制链接]
查看11 | 回复9 | 2012-11-28 14:39:05 | 显示全部楼层 |阅读模式
请问 我怎么在 shell 中与plsql 语句实现 交互的效果呢 ?
比如,
linux#./test.sh
please input a the empno:这个地方我输入工号
然后 read a ,把这个变量接收,但我不知道怎么把这个变量传递给PLSQL去处理
selectempno,sal from emp where empno = &en;

回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层


这算不算是问题呀?
回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层
sql用sqlplus处理,pl/sql也可以
回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层
〇〇 发表于 2012-5-28 22:14
sql用sqlplus处理,pl/sql也可以

是的,sqlplus 可以写成
#!/bin/bash
echo "please input sec_code:"
read sec_code
su - oracle-c "sqlplus test/1234<<EOF
spool /opt/oracle/a.txt;
select * from emp where empno=$sec_code;
spool off;
exit
EOF"
但如果换成PLSQL怎么把$sec_code传递进去呢,PLSQL是用&sec_code表示的吧,不需要特异功能吧!!! :)
回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层
你的PLSQL具体是怎么个表现形式?
回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层
lastwinner 发表于 2012-5-29 01:58
你的PLSQL具体是怎么个表现形式?

#!/bin/bash
echo "please input sec_code:"
read aa
su - oracle-c "sqlplus test/1234<<EOF
set serverout on
spool /opt/oracle/a.txt;
create procedure abc
declare
v_ename varchar2(5);
v_salnumber(7,2);
begin
select ename,sal into v_ename,v_sal from scott.emp where empno=&bb;
dbms_output.put_line('the user is :'||v_ename|| ',whoissal is :'||v_sal);
end;
/
spool off;
exit
EOF"

我从SHELL处传入的aa变量,怎么转换成bb呢 ?就是这个问题,不晓得我讲清楚了没呢
回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层
那你完全可以换成在sqlplus里去读取
回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层
lastwinner 发表于 2012-5-30 01:26
那你完全可以换成在sqlplus里去读取

http://www.itpub.net/forum.php?mod=viewthread&tid=469543
见15楼我的回复
回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层
lastwinner 发表于 2012-5-30 01:31
http://www.itpub.net/forum.php?mod=viewthread&tid=469543
见15楼我的回复

大哥,你好像每天都忙得相当晚啊,还是你的时区有差别呀

你的大体意思是在sqlplus中调用sql脚本,但不能在shell中交互?
回复

使用道具 举报

千问 | 2012-11-28 14:39:05 | 显示全部楼层
nola_r 发表于 2012-5-30 10:13
大哥,你好像每天都忙得相当晚啊,还是你的时区有差别呀
你的大体意思是在sqlplus中调用sql脚本,但 ...

我这样做当然不能啦,呵呵,这是变量作用域的问题嘛
你可以换个思路,将sql脚本用shell生成,然后shell再执行之
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行