AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SELECT in StoredProcedure gibt keine Datensätze zurück
Thema durchsuchen
Ansicht
Themen-Optionen

SELECT in StoredProcedure gibt keine Datensätze zurück

Ein Thema von Ferber · begonnen am 17. Jan 2006 · letzter Beitrag vom 18. Jan 2006
Antwort Antwort
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#1

SELECT in StoredProcedure gibt keine Datensätze zurück

  Alt 17. Jan 2006, 13:55
Datenbank: MSDE • Zugriff über: ADO
Warum gibt SELECT in StoredProcedure keine Datensätze zurück ???
SQL-Code:
Create Procedure Test2
As
if exists (select * from TestTable) drop table "dbo"."TestTable"

CREATE TABLE "TestTable"
  ("Nummer" "int" NOT NULL ,
   "Datum" dateTime ,
   "Name"  nvarchar (20)
    CONSTRAINT "PK_Nummer" PRIMARY KEY CLUSTERED ("Nummer")
   )

CREATE INDEX "IX_Name" ON "dbo"."TestTable"("Name")

insert into dbo.TestTable ("Nummer", "Datum", "Name") VALUES (60100, GetDate(), 'Hugo 1')
insert into dbo.TestTable ("Nummer", "Datum", "Name") VALUES (60101, GetDate(), 'Hugo 2')

select * from TestTable
Ist umgebauter Code aus Beispieldatenbank "Nordwind".
Die Tabelle wird gelöscht und angelegt, es werden jedoch keine Datensätze zurückgegeben.
Hat da jemand eine Lösung
Otto
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: SELECT in StoredProcedure gibt keine Datensätze zurück

  Alt 17. Jan 2006, 14:21
[quote="Ferber"]if exists (select * from TestTable) drop table "dbo"."TestTable" Klappt doch gar nicht, wenn TestTable nicht existiert. Dann wird eine Exception ausgelöst und der Rest der SP wird gar nicht mehr ausgeführt. Das hier klappt zwar...
SQL-Code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TestTable]') and OBJECTPROPERTY(id, N'TestTable') = 1)
drop table [dbo].[TestTable]
... aber warum verwendest Du nicht einfach eine temporäre Tabelle ("#Table"), die Du einfach am der SP wieder löscht? Diese temporären Tabellen sind immer nur in dem 'Batch' gültig, indem sie angelegt wurden.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#3

Re: SELECT in StoredProcedure gibt keine Datensätze zurück

  Alt 17. Jan 2006, 14:25
Die Ausführung deiner SP ist vermutlich immer beim CREATE TABLE abgebrochen, weil das Löschen der Tabelle so nicht funktioniert.

Hier der funktionierende Code.
Ich würde die SP aber an deiner Stelle noch auf temporäre Tabellen umstellen.
Zudem solltest du beim binm Feld "Name" wenn möglich den Typ VARCHAR anstatt NVARCHAR verwenden.
Mit UniCode-Feldern klaust du dir unnötig Performance.

SQL-Code:
CREATE Procedure Test2
AS
BEGIN

SET NOCOUNT ON

-- Testtable löschen, falls vorhanden
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'TestTableAND type = 'U')
BEGIN
  DROP TABLE [TestTable]
END

-- Testtable neu erstellen
CREATE TABLE [TestTable]
  ([Nummer] INT NOT NULL ,
   [Datum] DATETIME ,
   [Name] NVARCHAR(20)
   CONSTRAINT [PK_Nummer] PRIMARY KEY CLUSTERED ([Nummer])
  )
-- Index auf Testtable erstellen
CREATE INDEX "IX_Name" ON [TestTable] ([Name])


-- Datensätze einfügen
insert into dbo.TestTable ("Nummer", "Datum", "Name") VALUES (60100, GetDate(), 'Hugo 1')
insert into dbo.TestTable ("Nummer", "Datum", "Name") VALUES (60101, GetDate(), 'Hugo 2')

SET NOCOUNT OFF

-- Datensätze ausgeben
select * from TestTable

END


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#4

Re: SELECT in StoredProcedure gibt keine Datensätze zurück

  Alt 17. Jan 2006, 15:08
TXH @jensw_2000 : Ja das klappt wunderbar !
Temporäre Tabellen ?! Werd' mal gleich suchen ob ich darüber was finde.
THX @alzaimar
Gibt's irgendwo Tutorials wo sowas drinsteht ? Oder ein gutes Buch mit mind 1000 Seiten ?
Otto
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: SELECT in StoredProcedure gibt keine Datensätze zurück

  Alt 18. Jan 2006, 11:43
Das Buch zum Server: "Inside SQL-Server 2000 von Soukup und Delaney", ein Muss für jeden ernsthaften MSSQL-Programmierer.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#6

Re: SELECT in StoredProcedure gibt keine Datensätze zurück

  Alt 18. Jan 2006, 12:52
Zitat von alzaimar:
Das Buch zum Server: "Inside SQL-Server 2000 von Soukup und Delaney", ein Muss für jeden ernsthaften MSSQL-Programmierer.
THX, werd ich mir besorgen.
Habe gerade "SQL for Dummies" von Allen G. Taylor gefunden, dürfte auch ganz brauchbar sein.
Otto
  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 22:48 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