FirstName LastName University
Bob Brown Aviation
Kate Dylan Economic
Tommy Loren Aviation
大学有默认值:航空。 有存储过程将值插入表中, 在过程调用中有3个参数:
@declare firstname varchar(50),
@declate lastname varchar(50),
@declare university varchar(50)
insert into myTbl (FirstName,LastName,University) values(@firstname,@lastname,@university)
我想如果在程序中@university是空的,不要插入到表中,例如,如果我执行:
EXEC myProcedure 'Joseph','Divan',''
它必须只插入表格名字和姓氏大学将是航空,因为它是默认值
答案 0 :(得分:2)
如果您的默认名称“大学”列始终为航空,我建议采用此方法。
为“University”列设置默认值约束,如果值为null,则会自动插入默认值。
ALTER TABLE myTbl ADD CONSTRAINT DF_UName DEFAULT N'Aviation' FOR University
然后使用此代码
declare @firstname varchar(50),
declate @lastname varchar(50),
declare @university varchar(50)
IF (@university = '' OR (@university IS NULL) )
BEGIN
INSERT INTO myTbl (FirstName,LastName)
VALUES (@firstname,@lastname);
END
ELSE
BEGIN
INSERT INTO myTbl (FirstName,LastName,University)
VALUES (@firstname,@lastname,@university);
END
希望这有帮助
答案 1 :(得分:1)
MS SQL允许您为存储过程中的参数设置默认值:
CREATE PROCEDURE MyProc
@firstName varchar(50),
@lastName varchar (50),
@university varchar(50) = 'Aviation'
AS
INSERT INTO myTbl (FirstName,LastName,University)
VALUES (@firstname,@lastname,@university);
您可以通过两种方式使用它:
EXEC MyProc 'Bob', 'Brown'
EXEC MyProc 'Kate', 'Dylan', 'Economic'
答案 2 :(得分:1)
我认为更改表格架构以获得更好的性能会更好。
您可以更改表格架构,如下所示,以合并默认值。
ALTER TABLE myTbl
ALTER COLUMN Univesity SET DEFAULT 'Aviation'
P.S。如果您只需要使用存储过程,那么您可以参考上面的答案。
答案 3 :(得分:0)
试试这个
@declare firstname varchar(50),
@declate lastname varchar(50),
@declare university varchar(50)
IF (@university is not null)
BEGIN
insert into myTbl (FirstName,LastName,University) values(@firstname,@lastname,@university)
END
答案 4 :(得分:0)
在插入语句之前插入以下内容:
如果@university为空集@university = null
答案 5 :(得分:0)
无论您选择哪种解决方案来检查大学是否为空,请尝试从存储过程中提取IF条件,因为它会降低执行速度并消耗执行计划的内存。最好的方法是在查询中使用IF条件,并根据条件的满足情况调用两个不同的存储过程
答案 6 :(得分:0)
您可以在插入值时简单地包含参数检查。如果您未指定任何值,则会将“航空”设置为默认值
insert into #MyTbl (FirstName,LastName,University) values(@firstname,@lastname,isnull(@university, 'Aviation'))
由于