Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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^^

Geschrieben

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

Geschrieben

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

Geschrieben
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

Geschrieben

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??:(

Geschrieben
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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...