- 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= Н'Печели повече и губи по-малко' Накрая приятелят ми каза, че нулевата стойност трябва да получи стандартна стойност, затова я промених на следващия код и всичко беше нормално.
- 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
Копирай код
|