Tu jest mój kodu:procedury przechowywanej Domyślna wartość parametru - jest to stała lub zmienna
USE [xxx]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[problemParam]
@StartDate INT = CONVERT(INT,(CONVERT(CHAR(8),GETDATE()-130,112))),
@EndDate INT = NULL
AS
BEGIN
SSMS
nie jest zbyt zadowolony z domyślny wartości używałem - w MSDN DEFINITION HERE mówi, że wartość domyślna musi być stała, a nie zmienna.
Czy CONVERT(INT,(CONVERT(CHAR(8),GETDATE()-130,112)))
jest zmienną czy stałą? Nie jest to zmienna w tradycyjny sposób, jak myślę o zmiennej, ale potem znowu nie jest stała jak jest '03 jan 2013'
.
Jak sobie z tym poradzić? Przenieść CONVERT(INT,(CONVERT(CHAR(8),GETDATE()-130,112)))
do klienta, który wywołuje procedurę przechowywaną?
EDIT
Możliwy duplikat jako Właśnie nanosi ten SO POST
Wynik 'GETDATE()' * zmienia się * według czasu, więc nie może być stały. Użyj wartości NULL/magicznej dla wartości domyślnej, wykryj ją i przypisz swoje wyrażenie, jeśli jest zgodne. –
@AlexK. Nie jestem pewien, czy masz rację: na pewno 'GETDATE()' jest oceniany, gdy jest wywoływana, a następnie stała. Zobacz [** te posty na blogu **] (http://sqlblog.com/blogs/andrew_kelly/archive/2008/03/01/when-a-function-is-indeed-a-constant.aspx) - widzi być dyskusyjnym – whytheq