admin 发表于 2023-12-15 19:39:41

sql多行结果直接声明变量

要将Oracle SQL查询的多行结果直接导出为Shell变量,可以使用sqlplus命令结合使用一些Shell命令。

以下是一个示例脚本,演示如何执行Oracle SQL查询并将多行结果直接导出为Shell变量:

bash
#!/bin/bash

# 执行SQL查询并将结果导出为Shell变量
query_result=$(echo "set heading off; set feedback off; set pagesize 0;
SELECT column_name FROM mytable;" | sqlplus -s username/password@mydatabase)

# 将查询结果按行分割为数组
IFS=$'\n' read -r -d '' -a result_array <<< "$query_result"

# 显示每行结果
for row in "${result_array[@]}"
do
    echo "$row"
done
在这个示例中,我们使用echo命令生成一个包含SQL查询语句的字符串,并将其通过管道传递给sqlplus命令。-s选项表示以安静模式输出结果,username/password@mydatabase表示连接到指定的Oracle数据库。

然后,我们使用read命令将查询结果按行分割为数组result_array。IFS=$'\n'设置了行分隔符为换行符,-r选项表示禁止对反斜杠进行转义,-d ''选项表示以空字符为行尾分隔符,-a result_array选项表示将读取的行保存到result_array数组中。

最后,我们使用一个循环遍历result_array数组,并显示每行结果。

请注意,这只是一个基本示例,您需要根据您的实际情况进行修改和定制。例如,您可以使用不同的SQL查询,对每行结果进行进一步处理等等。

另外,请确保您已经安装了sqlplus命令,以及必要的Oracle客户端组件。
页: [1]
查看完整版本: sql多行结果直接声明变量