【发布时间】:2016-05-12 07:25:06
【问题描述】:
我有一个 shell 脚本,它存储从其父脚本作为输入拾取的值数组。
该数组需要在 PL/SQL 代码块中使用。我需要遍历 unix 数组并将元素存储在 pl/sql 集合变量中。但我无法增加数组的索引。以下是我的代码:
#!/bin/sh
# local variables declaration and initialization
v_username="$1"
v_password="$2"
v_database="$3"
v_vdsl_file="$4"
IFS=$'\n'
set -f
counter=0
declare -a v_vdsl_id
for i in $(cat $v_vdsl_file); do
v_vdsl_id[$counter]=`echo "$i"`
counter=$(($counter+1))
done;
p=0
conn1=`sqlplus -s ${v_username}/${v_password}@${v_database}<<THEEND
SET HEAD OFF
SET AUTOPRINT OFF
SET ECHO OFF
SET VERIFY OFF
SET FEEDBACK OFF
SET LINESIZE 3000
SET WRAP OFF
SET serveroutput on
DECLARE
counter integer :=0;
type table_vdsl_id is table of integer;
vdsl_oids table_vdsl_id := table_vdsl_id();
begin
for i in 1..${#v_vdsl_id[*]}
loop
counter := counter +1;
vdsl_oids.extend;
vdsl_oids(counter) := ${v_vdsl_id[$p]};
${p} := ${p} +1;
end loop;
end;
/
THEEND`
尝试递增 unix 变量计数器时遇到错误:
0 := 0 +1;
*
ERROR at line 88:
ORA-06550: line 88, column 9:
PLS-00103: Encountered the symbol "0" when expecting one of the following:
( begin case declare end exit for goto if loop mod null
${p} 基本上获取了 p 的值,但是如何在 sql 块中更改这个 unix 计数器的值呢?请指教。
【问题讨论】: