Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

HIIIIIILFE für Funktionen in MS-SQL-Server2008

Empfohlene Antworten

Hallo zusammen

ich hab die aufgabe eine firebird datenbank in ein ms-sql-server2008 zu portieren. ich hab ein script geschrieben das mir die ganzen tabellen mit schlüssel anlegt. Nun verzweifle ich aber an einer UDF.

unzwar muss ich eine Funktion schreiben die 4 datensätze aus der tabelle liest und den kleinen wert zurück liefert. ich hab es erst mit der Funktion min() versucht die aber einen argument braucht und ich weiß da wirklich nicht was ich übergeben soll. Dann hab ich was anderes versucht was aber nicht das macht was es machen soll .... hier der code

Bei meiner Funktion muss ich die zahlen selber eintippen, das soll aber nicht so sein er soll die zahlen selber aus der datenbank lesen.

Ich danke schon vorraus für jede Hilfe die mich weiter bringt und die es auch nicht tut;)

CREATE FUNCTION [dbo].[VZA_MIN] (@zahl1 as INTEGER, @zahl2 as integer, @zahl3 as integer, @zahl4 as integer

)

RETURNS INTEGER

AS

BEGIN

/* Funktionskörper */

declare @min AS INTEGER

--declare @zahl1 as INTEGER, @zahl2 as integer, @zahl3 as integer, @zahl4 as integer

if(@zahl1<=@zahl2) and (@zahl1<=@zahl3) and(@zahl1 <= @zahl4)

set @min = @zahl1

if (@zahl2<= @zahl1) and(@zahl2 <= @zahl3) and(@zahl3<=@zahl4)

set @min = @zahl2

if (@zahl3<=@zahl1) and (@zahl3<=@zahl2) and(@zahl3<=@zahl4)

set @min = @zahl3

if (@zahl4<=@zahl1) and (@zahl4<=@zahl2) and(@zahl4<=@zahl3)

set @min = @zahl4

return @min

END

falls einer ein tool kennt welches mit eine firebird datenbank in ms-sql exportiert dann nur her damit^^

Dein 4 Datensaetze muessen ja irgendeine gemeinsamkeit haben, oder?

Wenn ja

SELECT MIN(zahl) FROM tabelle GROUP BY gemeinsamkeit

Wenn nein musst du auf eine andere Antwort warten :P

Wie du das meinst geht auch aber dann muss ich für jede Tabelle diese Abfrage immer neu schreiben. Ich brauche eine Funktion die mir den kleinsten wert returned. z.B hab ich in eine zeile 4 wert

4221 ------------- 2 ----------- 312 ------------ 23

dann würde es mir die 2 zurückgeben

Bei meiner Funktion muss ich die zahlen selber eintippen, das soll aber nicht so sein er soll die zahlen selber aus der datenbank lesen.

bevorzugt sollte man das, was mit reinem SQL möglich ist, auch mit SQL machen und nicht mit UDFs resp (oder dort eben SQL verwenden und nichts "händisch eintippen").

deswegen SQL mit SELECT.

hab ich in eine zeile 4 wert

du hast 4 einzelne felder in der tabelle, richtig?

MIN() liefert den minimalen wert einer menge von zeilen.

wenn du das minimun von vier feldern benötigst, musstest du die reihen in zeilen wandeln. das kannst du entweder mittels UNPIVOT oder OVER ... PARTITION machen.

falls einer ein tool kennt welches mit eine firebird datenbank in ms-sql exportiert dann nur her damit^^

ab einer gewissen komplexität der datenbank wird selbst ein universelles tool, welches datenbanken migriert, seine grenzen erreichen. die eierlegende wollmilchsau gibt es nicht, aber vielleicht verrätst du ja mal, wie komplex die firebird-datenbank ist.

s'Amstel

Erstmal danke für die schnell Antwort:)

Ich habe meinen fehler behoben meine Funktion funktioniert:P

nur als die Datenbank meine Funktion gespeichert hat hat er ihr die bezeichnung dbo.VZA_MIN gegeben und ich habe immer versucht sie mit VZA_MIN aufzurufen :upps

Jetzt stehen aufjedenfalls all meine Views bis auf eins, es wäre GENIAL wenn ihr mir da weiterhelfen könntet^^

und zwar hab ich einen cast:

CAST(<ausdruck1> | <ausdruck2> | <ausdruck3> as varchar(100))

die ausdrucke sind alle vom typ varchar(254) jetzt gibt er mir die

fehlermeldung :

'Die Datentypen varchar und varchar sind im "|" - Operator inkompatible'

Hat da einer ne idee wie ich das lösen könnte??:(

CAST(<ausdruck1> | <ausdruck2> | <ausdruck3> as varchar(100))

'Die Datentypen varchar und varchar sind im "|" - Operator inkompatible'

2 sekunden recherche:

Jeder gültige Ausdruck von einem Datentyp aus der ganzzahligen Datentypkategorie oder die Datentypen bit, binary oder varbinary. expression wird für die bitweise Operation als binäre Zahl behandelt.

Bei einer bitweisen Operation kann nur ein expression vom Datentyp binary oder varbinary sein.

alles klar?

s'Amstel

DANKKKEEEEEEE für die schnelle Antwort....

Hab jetzt die Datentypen geändert und nun tut es auch danke sehr:uli

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.