![]() |
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
Create View gibt Fehler zurück
Hallo
ich erzeuge mit
SQL-Code:
erfolgreich eine view.
IF NOT EXISTS (SELECT * FROM sysobjects WHERE NAME = 'access_rights' AND xtype = 'V')
exec ('Create view dbo.access_rights as select sys.name as login_name, ben.benutzer_id as benutzer_id, ben.name as name, ben.std_kundenstamm as std_kundenstamm, ben.access_rights as access_rights, ben.beschreibung as beschreibung from sysusers sys LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name) where hasdbaccess = 1 ') Jetzt ändere ich die Zeile 10 wie folgt:
SQL-Code:
und bekomme den Fehler:
LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name) and (ben.access_rights <> 'Deaktiviert' )
"Falsche Syntax in der Nähe von Deaktiviert". Wenn ich aber
SQL-Code:
mit TOAD ausführe bekomme ich auch Ergenisse ohne Fehlermeldung.
select sys.name as login_name,
ben.benutzer_id as benutzer_id, ben.name as name, ben.std_kundenstamm as std_kundenstamm, ben.access_rights as access_rights, ben.beschreibung as beschreibung from sysusers sys LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name) and (ben.access_rights <> 'Deaktiviert' ) where hasdbaccess = 1 Was mach ich hier falsch? oliver |
Re: Create View gibt Fehler zurück
Hallo Oliver,
wäre es so nicht besser?
SQL-Code:
Freundliche Grüße
select sys.name as login_name,
ben.benutzer_id as benutzer_id, ben.name as name, ben.std_kundenstamm as std_kundenstamm, ben.access_rights as access_rights, ben.beschreibung as beschreibung from sysusers sys LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name) where hasdbaccess = 1 and ben.access_rights <> 'Deaktiviert' |
Re: Create View gibt Fehler zurück
Hallo marabu
leider bekomme ich mit
SQL-Code:
immer noch den Fehler:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE NAME = 'access_rights' AND xtype = 'V')
exec ('Create view dbo.access_rights as select sys.name as login_name, ben.benutzer_id as benutzer_id, ben.name as name, ben.std_kundenstamm as std_kundenstamm, ben.access_rights as access_rights, ben.beschreibung as beschreibung from sysusers sys LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name) where hasdbaccess = 1 and ben.access_rights <> 'Deaktiviert' ') "Falsche Syntax in der Nähe von Deaktiviert" oliver |
Re: Create View gibt Fehler zurück
Wie sieht denn das DDL Statement von Tabelle BENUTZER aus?
|
Re: Create View gibt Fehler zurück
Hall marabu,
also ich hab inzwischen herausgefunden was DDL bedeutet (google sei dank), aber leider weis ich nicht wo ich in Toad die Info bekommen kann welche DDL für benutzer verwendet wird. Ich hab die Tabelle benutzer ausgewählt und bin alle Karteikarten durchgegangen die für benutzer zur Verfügung stehen. Nach welchen Informationen zur DataDefinitionLanguage muß ich ausschau halten? oliver |
Re: Create View gibt Fehler zurück
Ich wollte von dir wissen welchen Datentyp das Feld BENUTZER.ACCESS_RIGHTS hat. Das entsprechende DDL-Statement ist CREATE TABLE BENUTZER ... - du hast es als Script irgendwo liegen oder kannst es vom DBMS erzeugen lassen. Auch TOAD sollte die Bereitstellung von DDL Statements unterstützen.
Mein Verdacht ist, dass dein Feld keinen passenden Typ hat, der mit dem String-Literal 'Deaktiviert' verglichen werden könnte. |
Re: Create View gibt Fehler zurück
Hallo marabu,
das Feld access_rights ist vom Typ varchar(30) NOT NULL siehe Script
SQL-Code:
oliver
IF NOT EXISTS (SELECT * FROM sysobjects WHERE NAME = 'benutzer' AND xtype = 'U')
CREATE TABLE dbo.[benutzer] ( [benutzer_id] int IDENTITY(1,1) NOT NULL, [login_name] varchar(20) NOT NULL, [name] varchar(80) NOT NULL, [access_rights] varchar(30) NOT NULL, [beschreibung] varchar(300) NOT NULL, [std_kundenstamm] varchar(50) NOT NULL, PRIMARY KEY ([benutzer_id]), UNIQUE (login_name) ) |
Re: Create View gibt Fehler zurück
Genau das ist das DDL nach dem gefragt wurde ;-)
|
Re: Create View gibt Fehler zurück
Kann es sein, dass du beim Eintragen deines Statements als CommandText vergessen hast die beiden Apostrophe rund um Deaktiviert zu verdoppeln?
SQL-Code:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE NAME = 'access_rights' AND xtype = 'V')
exec ('Create view dbo.access_rights as select sys.name as login_name, ben.benutzer_id as benutzer_id, ben.name as name, ben.std_kundenstamm as std_kundenstamm, ben.access_rights as access_rights, ben.beschreibung as beschreibung from sysusers sys LEFT OUTER JOIN benutzer ben ON (ben.login_name = sys.name) where hasdbaccess = 1 and ben.access_rights <> ''Deaktiviert'' ') |
Re: Create View gibt Fehler zurück
Hallo marabu,
es hat funktioniert mit den doppelten Anführungzeichen. Hab schon einige Variationen ausprobiert, aber nicht diese. Ich hatte auch vermutet dass es mit der Syntax zu tun hat. Nochmals vielen Dank. Oliver |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz