Variablenübergabe funkt nicht!?

Hallo SQL Profis,

ich möchte ein Script zu einer SQL Datenbank erstellen. Dem sollen in einem kurzen Dialog eine Varible zugewiesen werden(Zeile 12&13). In der Zeile 31ff wird die Variable dann aufgerufen allerdigs bekomme ich da eine Fehlermeldung. Ich habe es bereits mit verschiedenen Kommas versucht ohne Ergebnis. Ist das überhaupt möglich??

Gruß
Micha

 1 #!/bin/csh 
 2 #
 3 #
 4 #
 5 #
 6 #
 7 #
 8 #GEBEN SIE DEN ARCHIV-PFAD EIN Z.B. /ARCHIV
 9 set var2 = /archiv/archiv/project
 10 #
 11 #
 12 echo "GEBEN SIE HIER EIN AUF WELCHE Tabelle SIE DAS SKRIPT ANWENDEN MÖCHTEN Z.B. TAB1: "
 13 read var1
 14 #set var1 = mdt1 
 15 set Skript = Befehlskette.sql
 16 set SQL = `which sqlplus`
 17 set DBUSER = "xxx"
 18 set DBPWD = "xxx"
 19 set Verz = /export/home/Skript/
 20 set spdat = spooldatei
 21 #
 22 echo "REM" \>$Skript
 23 echo "set heading off;" \>\>$Skript
 24 echo "set pagesize 1024;" \>\>$Skript
 25 echo "set feedback off;" \>\>$Skript
 26 echo "set echo off;" \>\>$Skript
 27 echo "spool $Verz$spdat;" \>\>$Skript
 28 echo "SELECT 'ls $var2/' || substr(table.adr,1,3) || '/' || substr(table.adr
,4,3)" \>\>$Skript
 29 echo " || '/' || substr(table.adr,7,3)|| '/' || to\_number(substr(table.adr,1
0,3))" \>\>$Skript
 30 #echo " || ' ' || max(table.version),table.id,table.pages,table.cas\_id\_ref" \>\>$Skript
 31 echo "FROM $var1 , table,cas\_table " \>\>$Skript
 32 echo "WHERE $var1.docid = table.id" \>\>$Skript
 33 echo "AND $var1.version = .version" \>\>$Skript
 34 echo "AND table.cas\_id\_ref = 'PROJEKT'" \>\>$Skript
 35 echo " GROUP BY table.adr,table.id," \>\>$Skript
 36 echo " table.pages,table.cas\_id\_ref" \>\>$Skript
 37 echo " ORDER BY table.adr;" \>\>$Skript
 38 echo "exit;" \>\>$Skript
 39 echo "spool off;"
 40 #
 41 #
 42 $SQL $DBUSER/$DBPWD @$Skript

Hi Micha,

das funktioniert bestimmt. Das Problem liegt bei die aber nicht auf SQL-Seite sondern eher bei der Generierung des SQL-Skripts (also anderes Forum).

Hast du mal versucht, die die per ‚read‘ gelesenen Variablen auszugeben (am besten mit einfassenden Zeichen etwas als echo „“). Da muss was nicht stimmen. Manche Shells - csh kenne ich leider zuwenig - nehmen es einem auch sehr uebel , wenn man in einer Zuweisung nach dem Var.-namen ein Leerzeichen setzt (wie bei dir).

Ausserdem wuerde ich es mal mit ksh oder bash probieren, dann könntest du dir evtl. einen Teil der laestigen ‚>>‘-Umleitungen sparen (mit exec-Syntax kombiniert mit Klammerung…).

Gruss
bernhard

DAnke Bernhard.