首页 > 解决方案 > 为什么在 shell 脚本中运行时游标语句在 isql(sybase) 中不起作用

问题描述

当我尝试从 shell 脚本运行以下 SQL 查询时,没有得到任何输出。

 #!/usr/bin/sh
. /apps/sybase/15.0.2/SYBASE.sh
SYBASE_OCS=OCS-15_0
isql=$SYBASE/$SYBASE_OCS/bin/isql
$isql -b -S"dataserver" -U"user" -P"pwd" -D"XXX" -s"," -w2000 -Jroman9  <<EOF >>output.txt
create table #tmp1 (ID_CLIENT varchar(20),ID_VALUE varchar(4))
GO
insert into #tmp1 values ('1029075','10')

GO
DECLARE curs CURSOR FOR
SELECT ID_CLIENT,ID_VALUE from #tmp1
GO
DECLARE @ID1 varchar(20),
@ID2 varchar(5)

 OPEN curs
 FETCH NEXT curs INTO @ID1,@ID2
 WHILE @@sqlstatus = 0
 BEGIN
 PRINT '* ID_CUTT_OFF: %1! ', @ID1
 EXEC BAU_U_2 'XXXX','XXXXXX','MIL',@ID1,@ID2,'FLH-123456'
 FETCH NEXT curs INTO @ID1,@ID2
  END
  CLOSE curs
  DEALLOCATE CURSOR curs
  GO
EOF

仅在该游标语句未执行之后才执行插入语句。但如果我在 SQL 浏览器上运行它,则相同的代码正在工作。您能否让我知道如何从 shell 脚本执行此操作。

标签: shellunixsybaseisql

解决方案


你的最后一个go前面似乎有 2 个空格。

go前面必须没有空格,即go必须从第 1 列开始。


推荐阅读