- ALTER PROCEDURE [dbo].[pUpdateSite]
- @ID BIGINT,
- @SiteName NVARCHAR(50),
- @SiteDesc NVARCHAR(500),
- @UpdateBy BIGINT,
- @C3Confirm BIT,
- @SSOUrl VARCHAR(255),
- @AuthConfirm BIT,
- @AuthUrl VARCHAR(255),
- @Remarks NVARCHAR(500)
- AS
- BEGIN
- SET NOCOUNT ON;
- DECLARE @Now DATETIME
- SET @Now=GETDATE()
- UPDATE tbSite SET SiteName=@SiteName,SiteDesc=@SiteDesc,UpdateBy=@UpdateBy,UpdateDate=@Now,C3Confirm=@C3Confirm,SSOUrl=@SSOUrl,AuthConfirm=@AuthConfirm,AuthUrl=@AuthUrl,Remarks=@Remarks WHERE ID=@ID
- END
Копія коду Це моя оригінальна збережена процедура, де має бути 2 поля порожні: або c3confirm і sourl порожні, або authconfirm і authurl порожні,
Тож я використав .net для виконання збереженої процедури, але вона завжди була ненормальною, і я не міг знайти рішення в Інтернеті, побачив, що SQL-оператор, який .net нарешті виконав, був таким:
exec pUpdateSite @ID=20,@SiteName=N'ohoh',@SiteDesc=N'wait',@UpdateBy=1,@C3Confirm=default,@SSOUrl=default,@AuthConfirm=1,@AuthUrl=N'http://www.baidu.com',@Remarks= N'Вигравати більше і менше програвати' Нарешті, мій друг сказав, що нульовому значення слід присвоїти значення за замовчуванням, тож я змінив його на наступний код, і тоді все стало нормальним.
- ALTER PROCEDURE [dbo].[pUpdateSite]
- @ID BIGINT,
- @SiteName NVARCHAR(50),
- @SiteDesc NVARCHAR(500),
- @UpdateBy BIGINT,
- @C3Confirm BIT=NULL,
- @SSOUrl VARCHAR(255)=NULL,
- @AuthConfirm BIT=NULL,
- @AuthUrl VARCHAR(255)=NULL,
- @Remarks NVARCHAR(500)=NULL
- AS
- BEGIN
- SET NOCOUNT ON;
- DECLARE @Now DATETIME
- SET @Now=GETDATE()
- UPDATE tbSite SET SiteName=@SiteName,SiteDesc=@SiteDesc,UpdateBy=@UpdateBy,UpdateDate=@Now,C3Confirm=@C3Confirm,SSOUrl=@SSOUrl,AuthConfirm=@AuthConfirm,AuthUrl=@AuthUrl,Remarks=@Remarks WHERE ID=@ID
- END
Копія коду
|