Procedura a nullowy parametr, nie aktualizuje w bazie, tsql

0

Majac taką tabele

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Dane](
	[Id] [int] NULL,
	[Liczba1] [int] NULL,
	[Liczba2] [int] NULL,
	[Liczba3] [int] NULL
) ON [PRIMARY]

GO

z danymi:

INSERT INTO dbo.Dane(Id, Liczba1, Liczba2, Liczba3) VALUES (1,2,3,4)

oraz procedure:

CREATE PROCEDURE [dbo].[procedura]
(
@Id INT,
@liczba1 INT,
@liczba2 INT,
@liczba3 INT
)
AS

DECLARE @sql NVARCHAR(MAX)
SET @sql =

N'UPDATE dbo.Dane
SET
Liczba1 = '+ CAST(@liczba1 AS nvarchar(10)) +',
Liczba2 = '+ CAST(@liczba2 AS nvarchar(10)) +',
Liczba3 = '+ CAST(@liczba3 AS nvarchar(10)) +'
WHERE Id = '+ CAST(@Id AS nvarchar(10)) +''

EXEC sp_sqlexec @sql

probuje ja wywolac z parametrami nullowymi

exec [dbo].[procedura] @Id = 1, @liczba1 = 2, @liczba2 = null, @liczba3 = null

wowczas nie aktualizuja sie zadne dane? nie jestem moze ekspertem w tsql, ale dlaczego tak sie dzieje? jak to rozwiazac?

0

dodam jeszcze ze musi to byc pisane za pomoc "sp_sqlexec"

1
Liczba1 = '+ case when @liczba1 is null then 'null' else @liczba1 end +',
0
Marcin.Miga napisał(a):
Liczba1 = '+ case when @liczba1 is null then 'null' else @liczba1 end +',

O to chodziło. Dziękuje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1