Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 25.03.2012 um 17:53:34 Uhr
Zitat von Logan000:
Funktionen geben klar bennante Werte zurück.
So wie auch meine Funktion IncreaseRGC()
Demo:
SELECT IncreaseRGC()
#806
GELÖST

MSSQL Tabellenname an eine Funktion übergeben

Frage Entwicklung Datenbanken

Mitglied: joni2000de

joni2000de (Level 1) - Jetzt verbinden

19.01.2012, aktualisiert 25.03.2012, 4493 Aufrufe, 6 Kommentare

Hallo Amins,

ich komme mal wieder nicht weiter und hoffe auf eure Hilfe.

Ist es möglich an eine Funktion einen Tabellenamen zu übergeben? In einer Tabelle, deren Name sich je nach User ändert, sind Werte gespeichert. Diese Werte müssen in der Funktion verarbeitet werden. Ich habe keine Lösung gefunden den Wert zu übergeben. Als Variable des Typs table geht nicht, da die Funktion diesen Typ nicht zu lässt. Als varchar geht zwar dann bringe ich aber in der Funktion das Select nicht hin, da select * from @variable nicht funktioniert und exec('select * from ' + @variable) in der Funktion auch nicht erlaubt ist.

Ich muss die Tabelle an mehrere unterschiedliche Funktionen übergeben.

Danke für euer Hilfe.

Gruß Joni
Mitglied: nxclass
19.01.2012 um 23:39 Uhr
Übergebe es als VARCHAR - baue mit CONCAT ein funktionierenden SQL String zusammen - jetzt kannst Du diesen in einem PREPARE .. EXECUTE Statement benutzen.

EDIT - das geht jedenfalls in MySql - hab das wiedermal überlesen, dass es um MSSql geht
Bitte warten ..
Mitglied: joni2000de
19.01.2012 um 23:45 Uhr
Hi nxclass,

das mit dem exec funktioniert leider nicht da dies in einer Funktion nicht zulässig ist.

Trotzdem danke.

Gruß Joni
Bitte warten ..
Mitglied: Logan000
20.01.2012 um 09:16 Uhr
Moin Moin

Da du nxclass "Wink mit dem Zaunpfahl" nicht verstanden hast...
1. Um was für ein Datenbank system handelt es sich und welche Version?
2. Was soll deine "Funktion" leisten bzw. zurückgeben?
Das Ergebnis von SELECT * FROM Warsauchimmer ist als rückgabewert für eine Funktion kaum zu gebrauchen.

Gruß L.
Bitte warten ..
Mitglied: joni2000de
20.01.2012 um 09:42 Uhr
Hallo Logan,

MSSQL Server 2008 R2. Die Funktionen geben mir je eine Tabelle zurück die verschiedene Selects mit Joins enthalten. Die über die Funktionen erstellten Tabellen werden dann in einem Select weiterverarbeitet. Jetzt ist es aber so, dass ich in allen Funktionen auf eine gemeinsame, aber eben je nach dem welcher User das Select ausführt, unterschiedliche Tabelle zugreifen muss. Den Namen dieser Tabelle wollte ich als Variable in die Funktion übergeben, damit in der Funktion ein Select auf diese variable Tabelle möglich ist.

Wenn das nicht geht habe ich mir folgendes überlegt (ist noch nicht getestet):
Ich baue eine View die die Daten dieser Usertabellen zusammenzieht. Der Name ist dann fix und kann in der Funktion angegeben werden. Aus dieser View machen ich ein Select für welches ich als Variable die Bedingung (nämlich den betreffenden User) für die Where-Klausel übergebe.

Was meint ihr dazu?

Danke für das Feedback!

Gruß Joni
Bitte warten ..
Mitglied: Logan000
20.01.2012 um 09:58 Uhr
Moin Joni

Ich möchte deine Kreativität nicht bremsen; aber "Usertabellen", wie ....
In einer Tabelle, deren Name sich je nach User ändert ...
sind (entschuldige den Ausdruck) Dreck.
Was immer darin gespeichert wird kommt in eine Tabelle mit statischem Namen und diese enthält ein Feld Username das entsprechend gefüllt wird.

Soviel zum DB Design. Zurück zur Funktion:
Funktionen geben klar bennante Werte zurück. Ganze Tabellen oder ErgebnisSets sind laut Dokumentation nicht zulässig (und machen auch keinen Sinn).
Kann es sein das du keine Funktion meinst, sonderen eine "gespeicherte Prozedur"?
Denn dann klappt auch ....
01.
exec('select * from ' + @variable)
Gruß L.
Bitte warten ..
Mitglied: joni2000de
25.03.2012 um 17:37 Uhr
Hallo Logan,
spät aber doch hier noch mein Feedback.
Ich habe das jetzt mit einer Tabelle für alle User gelöst. Funktioniert tadellos
Danke für deine Hilfe.
Gruß Joni
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell Funktion Ausgabe in Datei (2)

Frage von schicksal zum Thema Batch & Shell ...

Datenbanken
gelöst MSSQL-Benutzer . Zugriff nur auf 2 Tabellen und 1 View (3)

Frage von Snuffchen zum Thema Datenbanken ...

Datenbanken
Reguläre Ausdrücke in MSSQL dynamisch zusammensetzen (2)

Frage von Androxin zum Thema Datenbanken ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(34)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Webbrowser
Windows 7 unbeliebte Internetseite sperren (15)

Frage von Daoudi1973 zum Thema Webbrowser ...

ISDN & Analoganschlüsse
gelöst Splitter - RJ45 zu RJ11? (13)

Frage von Waishon zum Thema ISDN & Analoganschlüsse ...

LAN, WAN, Wireless
gelöst Suche Firmware Image für Cisco Aironet 1252 (10)

Frage von Herbrich19 zum Thema LAN, WAN, Wireless ...

Netzwerke
VLAN Verständnissproblem (9)

Frage von Dragan123 zum Thema Netzwerke ...