AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mit ADOCommand auf SQL2000 eine SP erzeugen?
Thema durchsuchen
Ansicht
Themen-Optionen

Mit ADOCommand auf SQL2000 eine SP erzeugen?

Ein Thema von sveni2211 · begonnen am 22. Dez 2006 · letzter Beitrag vom 4. Jan 2007
Antwort Antwort
sveni2211

Registriert seit: 22. Dez 2006
Ort: Friedrichroda
38 Beiträge
 
#1

Mit ADOCommand auf SQL2000 eine SP erzeugen?

  Alt 22. Dez 2006, 13:21
Datenbank: MS-SQL • Version: 2000 • Zugriff über: ADO
Hallo.

Ich habe eine MS-SQL 2000 Datenbank. Diese wird per ADO unter Delphi 7 angesprochen.

Jetzt habe ich das Problem, dass aus einer Zuarbeit zwei Stored Procedures mittels des Programms erzeugt werden müssen in der Datenbank. Ich habe die beiden SP's in zwei Dateien *.PRC bekommen. Ich haben nun Versucht mittel einer Instanz von TAdoCommand diese einzuspielen. Dazu setze ich den Typ auf cmdText. Und den Inhalt der Dateien lade ich über TStringList auf AdoCommand.SQL.Text. Wenn ich das nun Ausführe, kommt nur eine Fehlermeldung mit dem Inhalt "Konsens stimmt nicht oder ist unvollständig".

Wie kann ich diese SP importieren? Ich will sie also nicht ausführen sondern erst einmal reinkommen.
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Mit ADOCommand auf SQL2000 eine SP erzeugen?

  Alt 22. Dez 2006, 13:45
Hi,

SP kann man in SQL mit
Create Procedure ... erstellen.

Was steht denn in den RPC-Dateien drin?
Gruß
Norman
  Mit Zitat antworten Zitat
sveni2211

Registriert seit: 22. Dez 2006
Ort: Friedrichroda
38 Beiträge
 
#3

Re: Mit ADOCommand auf SQL2000 eine SP erzeugen?

  Alt 22. Dez 2006, 15:36
Beispiel:

SQL-Code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_ChangeMasterID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_x_D3000SV_MietEig]
GO

CREATE Procedure sp_ChangeMasterID
Wenn ich das Script im Query Analyzer lade und ausführe, dann funktioniert es. Lade ich es hingegen in die Command- Komponenten und versuche es auszuführen, kommt eine Fehlermeldung, dass der Kontext nicht stimmen würden und er die Operation nicht ausführen kann. Also irgendwie unterscheidet sich das ausführen mit der Delphi- Komponente noch von der mit dem Query Analzer.
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Mit ADOCommand auf SQL2000 eine SP erzeugen?

  Alt 22. Dez 2006, 15:44
Hi,

Zitat von sveni2211:
Wenn ich das Script im Query Analyzer lade und ausführe, dann funktioniert es.
Das kann mit dem obigen SQL nicht sein. Der Befehl [Create Procedure] ist oben zumindest nicht vollständig. Da fehlt der eigendliche Prozedur-Text. Oder steht da noch mehr drin?
Gruß
Norman
  Mit Zitat antworten Zitat
sveni2211

Registriert seit: 22. Dez 2006
Ort: Friedrichroda
38 Beiträge
 
#5

Re: Mit ADOCommand auf SQL2000 eine SP erzeugen?

  Alt 26. Dez 2006, 17:21
Da kommen noch etwa 300 Zeilen. Die habe ich weg gelassen, weil sie in dem Fall unwichtig sind (und Betriebsintern).

Für mich ist ja das Problem, das dieses Script im QA durchläuft. Ich aber diesen Durchlauf in Delphi nicht sauber hin bekomme.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#6

Re: Mit ADOCommand auf SQL2000 eine SP erzeugen?

  Alt 26. Dez 2006, 20:35
Aus der Delphi-Hilfe
Zitat:
Die Komponente führt den in ihrer Eigenschaft CommandText angegebenen Befehl aus. Es kann immer nur ein Befehl aufgerufen werden. Die Parameter des Befehls werden in der Eigenschaft Parameters übergeben. Die eigentliche Ausführung wird von Methode Execute durchgeführt.
Query Analyzer:
- Kann Batch-Skripte ausführen, sprich mehrere Befehle in einem Skript hintereinander!
TADOCommand:
- Immer nur ein Befehl !!

Zitat von sveni2211:
Beispiel:

SQL-Code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_ChangeMasterID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_x_D3000SV_MietEig]
GO

CREATE Procedure sp_ChangeMasterID
Wenn ich das Script im Query Analyzer lade und ausführe, dann funktioniert es. Lade ich es hingegen in die Command- Komponenten und versuche es auszuführen, kommt eine Fehlermeldung, dass der Kontext nicht stimmen würden und er die Operation nicht ausführen kann. Also irgendwie unterscheidet sich das ausführen mit der Delphi- Komponente noch von der mit dem Query Analzer.
Wie im Ausschnitt des SQL-Skripts zu sehen, sind es mindestens 2 Befehle:
Nr. 1:
SQL-Code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_ChangeMasterID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_x_D3000SV_MietEig]
Nr. 2:
CREATE Procedure sp_ChangeMasterID Das 'GO' wird und kann nur im Query Analyzer verwendet, aus explizierter Befehl zum Ausführen!

Trenne die Befehle und es wird Klappen !

Schauiii..

Holger
  Mit Zitat antworten Zitat
sveni2211

Registriert seit: 22. Dez 2006
Ort: Friedrichroda
38 Beiträge
 
#7

Re: Mit ADOCommand auf SQL2000 eine SP erzeugen?

  Alt 4. Jan 2007, 16:06
Danke erst einmal. Ich habe da nun eine Funktion hinzugesetzt, die eine Trennung an den GO's macht. Dafür habe ich jetzt ein neues Problem.

Wenn ich das ausführe kommt eine Fehlermeldung, das ein Parameter nicht richtig definiert sei. Mit etwas lesen hab ich nun rausgefunden, das ADOCommand in Parameters die Variablen aus dem Script erwartet. Nur kenne ich die ja vorher. Wenn ich Parametercheck auf False setzte kommt das selbe. Vermutlich erwartet der das von Anfang an. Ich will ja aber die SP nicht ausführen, ich will sie nur erstellen.

Wie kann ich dem ADOCommand mitteilen, das er keine Parameter zu erwarten hat? Oder muss ich das Script vorher durchgehen und die Variablen ermitteln?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz