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.

Eigene Funktionen im SQL-Server

Empfohlene Antworten

Veröffentlicht

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

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

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 ;)

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

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

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 ;)

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

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

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

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

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 :)

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.