Fehler in Stored Procedure

BlackC

Mitglied
Hallo Jungs, ich verzweifle gerade ein wenig ;(

Ich betreibe eine MS SQL Server 2008 R2 und möchte über ein Java-Programm in beliebiger Instance / Datenbank meine Stored Procedures erstellen, die ein weiteres Programm braucht.

DIe SQL-Query Datei hab ich geschrieben und die lässt sich auch ohne Probleme über den MS SQL Server Mangament ausführen.

Nun möchte ich diese Datei einlesen und über "execute" ausführen lassen. Dazu lese ich mit der folgenden Methode die SQL-Datei aus:

Java:
    public String sqlFileReader(String filepath )
     {
        String sqlstmt ="";
        try
        {
            BufferedReader br = new BufferedReader(new FileReader(filepath));

            String zeile = "";
            while ((zeile = br.readLine())!= null)
            {
              //System.out.println(zeile);
              sqlstmt += zeile;
              sqlstmt += "\n"; //Damit jede Zeile voneinader getrennt ist
            }
            br.close();
            return sqlstmt;
        }
        catch(IOException ioe)
        {
            ioe.printStackTrace();
        }
        return sqlstmt;
     }

Den String lass ich dann so ausführen:

Java:
public void createStoredProcedures(String driver, String address, String port, String name, String user, String pw)
    {
        try
        {
            setConfiguration(driver, address, port, name, user, pw);
            loadDBDriver();
            createConnection();
            createStatement();
            
            Filemanagement readSQLFile = new Filemanagement();
            String spoutsql = readSQLFile.sqlFileReader(".\\settings\\Create_SP_for_LA06.sql");
            
            
            
            if(spoutsql != null)
            {
                System.out.println(spoutsql);
                stmt.executeQuery(spoutsql);
            }
            else
            {
               //Fehler werfen
            }            
           closeConnection();
        }
        catch(SQLException se)
        {
            se.printStackTrace();
            JFrame frame = new JFrame();
            String message = se.getMessage();
            JOptionPane.showMessageDialog(frame, message,"ERROR by creating Stored Procedure", JOptionPane.ERROR_MESSAGE);
        }
    }

Nun bekomm ich aber bei der AUsführung den Fehler:
com.microsoft.sqlserver.jdbc.SQLServerException: Falsche Syntax in der Nähe von 'GO'.

Hierzu noch meine SQL-Query:

Java:
IF OBJECT_ID ( 'dbo.usp_createDeviceTable', 'P') IS NOT NULL
    DROP PROCEDURE usp_createDeviceTable;
GO

CREATE PROCEDURE usp_createDeviceTable(
 @tablename varchar(50)
 ) 
 AS 
 Declare @SQL VarChar(1000) 
 SELECT @SQL = 'Create Table ' + @tablename 
 SELECT @SQL = @SQL + '(Id integer NOT NULL IDENTITY(1,1) Primary Key , Name varchar(100) NOT NULL, State varchar(100) NOT NULL)' 
 Exec (@SQL) 
GO

Wo liegt der Fehler?
 
Zuletzt bearbeitet von einem Moderator:

andiv

Bekanntes Mitglied
Ich vermute er mag die beiden "GO"-Anweisungen nicht. Probier doch mal die Zeilen mit "GO" beim Einlesen herauszufiltern.
Danach könntest du auch noch probieren, das Query in mehrere Queries aufzuteilen und jedes einzeln mit executeQuery auszuführen, bzw. mit addBatch(...) und executeBatch() dann alle auf einmal ausführen.
 

BlackC

Mitglied
danke für die Antwort, werds ausprobieren, allerdings sollte es doch eigentlich auch so gehen, ohne eine batch zu erstellen.
 

andiv

Bekanntes Mitglied
Mit "GO" wirds denke ich nicht funktionieren, denn "GO" ist meines Wissens nach keine SQL-Anweisung und wird dir immer einen Fehler bringen.
 

BlackC

Mitglied
Mit "GO" wirds denke ich nicht funktionieren, denn "GO" ist meines Wissens nach keine SQL-Anweisung und wird dir immer einen Fehler bringen.

Anscheinend schon. Das "Go" führt bei Microsoft den Befehl erst aus, so nach dem Motto:

Select SQL = "irgendwas"; (Sql-Anweisung)
Exec SQL (führe den SQL-Befehl aus)
Go (tu es jetzt)

Die Syntax hab ich von meinem Professor bekommen und etwas modifiziert. Das "Go" signalisiert das Ende eines Batches von Transact-SQL-Anweisungen an die SQL Server-Hilfsprogramme.

GO (Transact-SQL)
 
M

maki

Gast
Das GO gehört aber nicht in JDBC SQL Code, nur direkt am Server bzw. per MS Client.
Das Skript kannst du nicht 1:1 übernehmen.
 

andiv

Bekanntes Mitglied
Du solltest die Seiten auch durchlesen, die du verlinkst ;-)

GO ist keine Transact-SQL-Anweisung; es ist ein Befehl, der von den sqlcmd- und osql-Hilfstprogrammen und vom SQL Server Management Studio-Code-Editor erkannt wird.

...

Auf den ODBC- oder OLE DB-APIs basierende Anwendungen erhalten einen Syntaxfehler, wenn sie versuchen, einen GO-Befehl auszuführen. Die SQL Server-Hilfsprogramme senden nie einen GO-Befehl an den Server.
 

BlackC

Mitglied
:oops:

sollte wohl wirklich meine verlinkten Seiten lesen. Hatte gehofft, einfach das Script ausführen zu können. Nun ja, hat sich wohl erledigt.

Danke für eure Hilfe :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Fehler bei Stored Function Datenbankprogrammierung 2
T Cast-Fehler: Spring Data exists.... boolean??? Datenbankprogrammierung 1
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
S @OneToMany @JoinTable failed to lazily initialize a collection Fehler Datenbankprogrammierung 2
C Oracle Fehler beim list.add() Datenbankprogrammierung 5
das_leon MySQL Fehler bei der Zeitzone Datenbankprogrammierung 7
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
L MySQL Bekomme einen Fehler beim ResultSet Datenbankprogrammierung 12
DaCrazyJavaExpert Derby/JavaDB Unfindbarer Fehler im Datenbank-Code Datenbankprogrammierung 87
L SQL Fehler (Table/View does not exist) Datenbankprogrammierung 17
P MySQL JPA / MySQL - Fehler bei type=innoDB Datenbankprogrammierung 8
Thallius MySQL Wo ist der Fehler in dem Query? Datenbankprogrammierung 2
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
W Jackcess Fehler Datenbankprogrammierung 1
I Fehler bei Ausgabe der Daten aus der DB Datenbankprogrammierung 3
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
serjoscha MySQL Eine Instanz von eigenem DBWrapper -> Fehler durch mehrfachbenutzung möglich? Datenbankprogrammierung 2
M Wo ist mein Fehler ? o: Datenbankprogrammierung 4
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
T JDBC Fehler Datenbankprogrammierung 2
Neumi5694 Java + MS Access + 64 Bit = Fehler -1073740777 Datenbankprogrammierung 2
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
R Fehler 2601 trotz SQL-UPDATE ? Datenbankprogrammierung 2
B JDBC Connection Fehler Datenbankprogrammierung 8
J Fehler bei mySQL Query Datenbankprogrammierung 19
D Oracle PLSQL Block Fehler Datenbankprogrammierung 11
P SQL-Statement Bei meinem Statement ist ein Fehler? Datenbankprogrammierung 2
S Fehler mit JdbcRowSet Datenbankprogrammierung 2
A Oracle Unbekannter Fehler bei insert Befehl Datenbankprogrammierung 3
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
M PL/SQL Fehler "Kein Wert zurückgegeben" Datenbankprogrammierung 4
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
Crashbreaker MySQL MySQL - Hibernate gibt Fehler aus Datenbankprogrammierung 25
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
I Derby/JavaDB Update Fehler Datenbankprogrammierung 4
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
N Oracle Fehler Ungültiges Zeichen Datenbankprogrammierung 2
jgh Zeichensatz-Fehler Datenbankprogrammierung 10
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
F hsqldb Fehler - unknown source Datenbankprogrammierung 11
E Fehler- Komme nicht auf Datenbank Datenbankprogrammierung 13
trash ResultSet Syntax Fehler Datenbankprogrammierung 11
trash JDBC Einbinden Fehler Datenbankprogrammierung 9
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
E Nach Server wechsel Datenbank fehler ?!? Datenbankprogrammierung 3
H Fehler bei null-Datum in MySQL-DB Datenbankprogrammierung 2
B SQL - Ich kann die Fehler nicht finden Datenbankprogrammierung 3
K DB2 Insert mit Subselect Fehler Datenbankprogrammierung 2
M Update mysql Fehler ?? Datenbankprogrammierung 4
T Fehler im SQL ... Datenbankprogrammierung 8
J Fehler bei Hibernate Configuration Datenbankprogrammierung 9
N group by fehler Datenbankprogrammierung 4
P SQL Fehler helft mir bitte Datenbankprogrammierung 12
S Fehler beim Auslesen von Daten Datenbankprogrammierung 6
C Wo ist der Fehler? Datenbankprogrammierung 5
H Fehler mit ". Microsoft Access Driver" Datenbankprogrammierung 12
K Fehler bei Rückgabewerten Datenbankprogrammierung 3
M Statemend Fehler Datenbankprogrammierung 11
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
E Seltsamer Fehler Datenbankprogrammierung 10
T Fehler bei Verbindungsaufbau zu MySql DB Datenbankprogrammierung 4
S Fehler bei DB Verbindung Access Datenbankprogrammierung 6
A JDBC-Fehler "Objekt bereits geschlossen" Datenbankprogrammierung 4
O SQL-Query bringt Fehler Datenbankprogrammierung 4
B MySql DELETE Anweisung gibt Fehler zurück Datenbankprogrammierung 7
A Fehler beim Starten des Servers für H2 Database Datenbankprogrammierung 13
A Fehler in der HSQLDB Datenbankprogrammierung 6
B fehler bei select befehl Datenbankprogrammierung 5
G SQL fehler -> woran liegt das? Datenbankprogrammierung 3
M Odbc und Fehler Datenbankprogrammierung 44
M Fehler bei der Verbindung zu einer MSSQL/Express Datenbank! Datenbankprogrammierung 17
D mySQL emullierte PreparedStatements haben Fehler unter Last Datenbankprogrammierung 3
F Fehler in Suns FilteredRowSet Implementierung? Datenbankprogrammierung 11
R Fehler in der Eingabe? Datenbankprogrammierung 3
J Fehler bei Oracle-Datenbankverbindung Datenbankprogrammierung 2
E JDBC Oracle Fehler, zugriff auf datenbank (Cluster) Datenbankprogrammierung 5
P Fehler: result-set zeigt auf null, aber warum Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
G Fehler beim Verbinden Datenbankprogrammierung 4
D Primary-Key -> Fehler: "Unique constraint violation& Datenbankprogrammierung 12
E Fehler in der SQL-Anweisung Datenbankprogrammierung 11
A Fehler in der Datenbankklasse Datenbankprogrammierung 14
M insert befehl funzt nicht!wo ist der fehler? Datenbankprogrammierung 5
N Fehler beim matchen von Strings via Query Datenbankprogrammierung 2
L komischer Fehler von ResultSet. Datenbankprogrammierung 2
R Fehler in Datenbankanbindung Servlet -> Access Datenbankprogrammierung 5
E Fehler bei String-Insert in MySQL-DB Datenbankprogrammierung 8
G Wo ist hier der Fehler (createStatement) Datenbankprogrammierung 2
M executeBatch() - Inserts trotz Fehler weitermachen Datenbankprogrammierung 5
W Fehler bei Insert Anweisung obwohl getestet Datenbankprogrammierung 3
J Fehler beim PreparedStatement Datenbankprogrammierung 2
H Java/Access - Fehler bei der Parameterübergbe Datenbankprogrammierung 4

Ähnliche Java Themen


Oben