Zum Inhalt springen

Eigene Funktionen im SQL-Server


Empfohlene Beiträge

Geschrieben

Hallo,

wahrscheinlich ist es ganz einfach aber ich seh den Wald vor lauter Bäumen nicht...

Ich habe eine StoredProcedure. Darin ist eine SQL-Abfrage:


SELECT Reparatur.GeraetID as GeraetID,
DATEPART(wk,Reparatur.Reparaturstartdatum) as KW, ...
[/PHP]

Mit DATEPART() will ich die Kalenderwoche des "Reparaturstartdatum" ermitteln.

Dies funktioniert aber nicht richtig. (Kalenderwochenberechnung im SQL-Server nimmt an dass der 1.1. immer KW 1 ist, stimmt z.B. für 2005 nicht).

Dafür habe ich eine StoredProcedure im Netz gefunden

[PHP]
CREATE PROCEDURE dbo.ISOweek
(
@DATE datetime
)
AS
BEGIN
DECLARE @ISOweek int

SET @ISOweek = DATEPART(wk, @DATE) + 1 -
DATEPART(wk, CAST( DATEPART( yy, @DATE ) AS CHAR(4) ) + '0104' )
--Special cases: Jan 1-3 may belong to the previous year
IF ( @ISOweek = 0 )
BEGIN
DECLARE @Date2 as datetime
SET @Date2 = CAST( DATEPART( yy, @DATE ) - 1 AS CHAR(4) ) +
'12' + CAST( 24 + DATEPART( DAY, @DATE ) AS CHAR(2) )
EXEC @ISOweek = ISOweek @Date2
SET @ISOweek = @ISOweek + 1
END
--Special case: Dec 29-31 may belong to the next year
IF ( ( DATEPART( mm, @DATE ) = 12 ) AND
( ( DATEPART( dd, @DATE ) - DATEPART( dw, @DATE) ) >= 28 ) )
SET @ISOweek = 1
RETURN(@ISOweek)
END
GO

Jetzt möchte ich diese StoredProcedure genauso aufrufen wie die Funktion "DATEPART".

Wenn ich einfach schreibe

"ISOweek(Reparaturdatum)" funktioniert es nicht... :-)

Wie muss ich die StoredProc aufrufen damit das funktioniert??

Danke schon mal...

Grüße aus Nordhessen,

Phil

  • 4 Wochen später...
Geschrieben

Hallo,

sorry das ich nicht gleich antworten konnte, ist was anderes dazwischengekommen.

Habe das mit "execute" probiert, funktioniert aber trotzdem nicht.

Ich weiß ja gar nicht ob das überhaupt geht, dass ich in einer Select-Anweisung eine Stored Procedure aufrufen kann.

Könntest Du mir bitte noch mal genauer erklären wie das geht?

Wäre echt nett.

Danke,

Phil

Geschrieben

Ich weiß ja gar nicht ob das überhaupt geht, dass ich in einer Select-Anweisung eine Stored Procedure aufrufen kann.

Das geht natürlich nicht.

Du kannst draus aber eine Funktion machen die Du mit einem select aufrufen kannst ;)

Geschrieben

Juhu!

Hallo,

das es nicht geht hab ich mir fast gedacht und vorhin angefangen eine Funktion zu erstellen. Kurz vor diesem Beitrag ist sie fertig geworden und funktioniert.

Danke trotzdem,

Phil

Geschrieben
Habe das mit "execute" probiert, funktioniert aber trotzdem nicht.

Ich hatte ja auch eher geschrieben, dass du die Prozedur getrennt aufrufen sollst und die Rueckgabe, welche du in einer Variablen speicherst dann in dein Select packst :)

Goos

Geschrieben
Ich hatte ja auch eher geschrieben, dass du die Prozedur getrennt aufrufen sollst und die Rueckgabe, welche du in einer Variablen speicherst dann in dein Select packst :)

Goos

Warum einfach wenn auch kompliziert geht ;)

Geschrieben
Warum einfach wenn auch kompliziert geht ;)

Oh, reine Gewohnheit.

In meinen Prozeduren mach ich in aller Regel Dinge, die in Funktionen nicht erlaubt sind :) (sonst koennt ich ja gleich Funktionen machen ;) )

Goos

Geschrieben
wenn du schreiben wuerdest, um welche DB es geht, koennte man dir vielleicht auch auf andere art&weise helfen

Hat er doch geschrieben "SQL-Server" ist ansich schon eindeutig und dazu kommt dann in dem Fall noch der Code der Prozedur.

Goos

Geschrieben
Hat er doch geschrieben "SQL-Server" ist ansich schon eindeutig und
Ne ne... ganz und gar nicht. Ein SQL-Server ist für mich erstmal irgendeine SQL basierte Datenbank. Dass viele MS gewöhnten damit direkt MS SQL assoziieren mag ja für manch einen normal sein, aber alle, die nicht täglich damit zu tun haben sehen das durchaus anders.
Geschrieben
Ne ne... ganz und gar nicht. Ein SQL-Server ist für mich erstmal irgendeine SQL basierte Datenbank. Dass viele MS gewöhnten damit direkt MS SQL assoziieren mag ja für manch einen normal sein, aber alle, die nicht täglich damit zu tun haben sehen das durchaus anders.

Genau, fuer die daran gewoehnten ists eindeutig und wenn du nicht dazu gehoerst, dann musst mich auch nach meinem und noch weiterzitieren *g* ;)

Goos

Geschrieben

Och, da bleib ich aber bei meiner Meinung.

SQL-Server in der Schreibweise und dann im Titel auch noch verbunden mit "im SQL-Server" und nicht "in einem SQL Server" halte ich einfach fuer eindeutig.

Es wird ja schliesslich von "dem" SQL-Server und nicht "einem" SQL-Server gesprochen.

Gut, wenn du es nicht erkannt hast, dann ists wohl nicht fuer alle ganz eindeutig und der Thread-Ersteller beraubt sich mit seiner ungenauen Aussage evtl. um Hilfe :)

Goos

PS: Genug der Diskussion ueber den Gehalt der Aussage "der SQL-Server" fuer mich, sonst gibts wieder nur Schelte von einem Moderator :)

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