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?