我使用下面的代码从oracle返回值。但无法得到 期望的结果。
编辑:发布具有实际值的函数。
function Check_Job_Info
{
print "Start week -Check_Job_Info : $start_week " 1>&2;
print "End Week - Check_Job_Info : $end_week " 1>&2;
JOBNUM=`sqlplus -s username/pwd@db <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT job_number FROM jobs_list WHERE start_week = 1347 and end_week = 1347 ;
EXIT;
EOF`
print "Job Exists : $JOBNUM " 1>&2;
}
打印的值也与硬编码值
相同问题是返回的值实际上并不存在于表中。因此它返回job_number,表示1000.当我使用1000执行select时,它不返回任何行。 start_week和end_week的值是数字
JOB_NUMBER NOT NULL NUMBER(5)
TYPE NOT NULL NUMBER(1)
START_WEEK NUMBER(5)
END_WEEK NUMBER(5)
查询中可能出现什么问题?试图在过去的两天内解决这个问题。
基本上检查行是否存在以及是否插入新行。
答案 0 :(得分:1)
sqlplus命令中的参数顺序错误。它应该是username/password@db
。尝试手动连接到数据库,你就会明白。
JOBNUM=`sqlplus -s username/password@db <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT job_number FROM jobs_List WHERE start_week = $start_week and end_week = $end_week ;
EXIT;
EOF`