0

我目前正在为一个项目做一个很好的拼图,也许你们中的一些人已经做过类似的事情:

它需要是一个 linux shell 脚本

以下是需要采取的步骤:

  1. xml 文件放置在 linux 数据库服务器(oracle)上

  2. xml 文件已经过验证(我用过 xmllint,这行得通)

  3. xml 文件包含一个批号,在导入之前,批号不允许出现在数据库中,那么如何将文件中的值传递到 sql 查询中(可能带有 if..then...else 子句?)

在此先感谢您的帮助!!

4

1 回答 1

0

如果脚本用户有权访问 sqlplus,您可以从 shell 脚本执行它并解析结果。

批处理号.sql

--  ==== batchnum.sql ===============
var bnum varchar2(32)
exec :bnum=&1
select count(*) from tablename where batchnumber=':bnum';
-- ========================

在你的 shell 脚本中执行命令:

value=`sqlplus uname/pass @batchnum.sql 12345`

然后$value使用grep或类似的解析。

笔记:

  • 未经测试的代码;我不能保证 var/exec 块的语法
  • 我以为batchnumvarchar2(32); 你会想根据你的实际类型来定义它
  • var/exec 结构有点麻烦,但使用了绑定变量。这允许 Oracle 的 SQL 解析器缓存查询,这将提高多次连续调用的性能
  • 无异常处理;作为练习留给你:)
  • 不验证输入参数;也留给你作为练习。确保以具有最小权限的用户身份调用它
于 2012-10-18T18:44:20.663 回答