MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 30.10.2018, 10:16   #1
thomasreick
MOF User
MOF User
Standard T-SQL : MSSQL 2012 - SQL-Statement per concat(...) zusammenbauen

Hallo zusammen,

ich versuche mittels concat()-Funktion einen SQL-Befehl zusammenzubauen. mit
print @sql
bekomme ich im SSMS den String auch ausgegeben. manuelles kopieren des Strings und ausführen im SSMS führt zum gewünschten Ergebnis.
Code:

use MeineSqlServerDb
go
declare @fb nvarchar(2) -- Variable für Fallunterscheidung
declare @sfile nvarchar(max) -- Variable als Selektionskriterium
declare @sql nvarchar(max) -- Variable für SQL-Statement
set @fb='Fall1'
set @sfile='c:tmpMeineImportdatei.xlsx'
select @sql=concat('SELECT Meine, Feld, Liste from [dbo].[MeineTabelle] fb WHERE fb.sourcefile=''',@sfile,'''')
print @sql
execute @sql --< FEHLER
der execute @sql bringt folgenden Fehler
Msg 203, Level 16, State 2, Line 12
The name 'SELECT Meine, Feld, Liste from [dbo].[MeineTabelle] fb WHERE fb.sourcefile='c:tmpMeineImportdatei.xlsx'' is not a valid identifier.

Weiß bitte jemand Rat?
Könnte es mit den Anführungszeichen am Ende zu tun haben?

__________________

Ich bitte um Input.

Vielen Dank

Thomas Reick
thomasreick ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.10.2018, 10:50   #2
hcscherzer
MOF Guru
MOF Guru
Standard

Ich setze bei dynamischem SQL die Zeichenketten immer stumpf mit '+' zusammen.
Und statt "select @sql = ... " verwende ich "set @sql = ... "

Aber die Sache mit den Apostrophen innerhalb soclcher Befehle ist auch bei mir immer trial & error, da bin ich mir auch nicht sicher.
Wie sieht denn das aus, was der print-Befehl ausgibt?

Es gibt im Übrigen die Möglichkeit, solche SQL Prozeduren zu debuggen und zu tracen, und zwar mit dem VisualStudio.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.10.2018, 11:09   #3
thomasreick
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Hans-Christian,

ich habe es mal mit '+' probiert, es komt aber der gleiche Fehler, selbst bei vollqualifizierter Angabe [Server].[Datenbank].[Schema].[Tabelle].

Wenn ich das nicht dynamisieren kann (bin im Moment etwas durch...):
Kann ich nach Fallunterscheidung in einer Stored Proc mehr als eine SQL-Anweisung ausführen lassen?

Schema:
if @fb='Fall1'
UPDATE-Statement Fall1.1
UPDATE-Statement Fall1.2

if @fb='Fall2'
UPDATE-Statement Fall2.1
UPDATE-Statement Fall2.2

Bitte Info.
Danke
Thomas

__________________

Ich bitte um Input.

Vielen Dank

Thomas Reick

Geändert von thomasreick (30.10.2018 um 11:09 Uhr). Grund: typo
thomasreick ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.10.2018, 15:14   #4
hcscherzer
MOF Guru
MOF Guru
Standard

Hallo Thomas.

Zitat:

ich habe es mal mit '+' probiert, es komt aber der gleiche Fehler,

Es liegt wohl an den Apostrophen ganz rechts.
Bin mir jetzt gerade aber nicht sicher, wie es korrekt sein müsste ...

Aber selbstverständlich kannst Du innerhalb einer sp Anweisungen abhängig von Bedingungen ausführen lassen.

Nur musst Du - wenn es mehr als eine Anweisung ist, diese mit begin und end klammern.
Ohne das wird nur die erste Anweisung nach dem if ausgeführt.

Code:

if @fb='Fall1' begin
  UPDATE-Statement Fall1.1
  UPDATE-Statement Fall1.2
end

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 31.10.2018, 11:01   #5
thomasreick
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Hans-Christian,


natürlich..., begin, end,... schäm...

ich mach das jetzt nicht dynamisch sondern mit festen Statements, die über ein if Fall=XYZ (mit begin und end...) ausgeführt werden

Danke, Thema setze ich auf erledigt.
Thomas

__________________

Ich bitte um Input.

Vielen Dank

Thomas Reick
thomasreick ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.