variable uso usar insertar entre diferencia datos como sql sql-server sql-server-2005 stored-procedures raiserror

uso - diferencia entre datetime vs smalldatetime sql server



¿Cómo imprimir la variable DateTime en el método RAISERROR? (2)

Mi procedimiento almacenado acepta dos parámetros @EffectiveStartDate DATETIME
@EffectiveEndDate DATETIME

Escribí el código de validación así:

IF(@EffectiveStartDate > @EffectiveEndDate) BEGIN RAISERROR (''SPName: InsertUpdateLiquidityDateRule: Start Date: %s cannot be greater than End Date %s'',11,1,CAST(@EffectiveStartDate AS varchar(30)),CAST(@EffectiveEndDate AS varchar(30))); RETURN -1 END

¿Puedo saber qué estoy haciendo mal aquí?

Al compilar mi SProc, apareció el mensaje ''Sintaxis incorrecta cerca de CAST ()''


El valor suministrado debe ser una constante o una variable. No puede especificar un nombre de función como un valor de parámetro. (desde MSDN Executing Stored Procedures ).

Debes hacer algo como esto:

declare @EffectiveStartDateText varchar(30) set @EffectiveStartDateText = cast(@EffectiveStartDate as varchar) declare @EffectiveEndDateText varchar(30) set @EffectiveEndDateText = cast(@EffectiveEndDate as varchar) RAISERROR ( ''SPName: InsertUpdateLiquidityDateRule: Start Date: %s cannot be greater than End Date %s'', 11, 1, @EffectiveStartDateText, @EffectiveEndDateText);


Solo estoy tratando de ayudar, aquí hay otro ejemplo. Puse esto en la declaración BEGIN CATCH después de mi BEGIN TRY.

Nota: Esto es muy similar al uso de una instrucción if.

BEGIN TRY --Do something. END TRY

BEGIN CATCH --Else en error hace esto. IMPRIMIR ''¡Problema encontrado! ''- Vaya, hubo un error - Se genera un error con los detalles de la excepción DECLARE @ErrMsg nvarchar (4000), @ErrSeverity int, @ErrLineNum int SELECT @ErrMsg = ERROR_MESSAGE (), @ErrSeverity = ERROR_SEVERITY (), @ErrLineNum = ERROR_LINE ()

RAISERROR(@ErrMsg, @ErrSeverity, 1, @ErrLineNum)

END CATCH