0
FirstName     LastName     University
   Bob         Brown        Aviation
   Kate        Dylan        Economic
   Tommy       Loren        Aviation

大学のデフォルト値は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','' ないでください。たとえば、 i exec の場合: テーブルに挿入する必要があるのは、名と姓の大学のみです。これはデフォルト値であるためです。

4

7 に答える 7

2

「大学」列のデフォルト名が常にAviationである場合、このアプローチをお勧めします。

「大学」列のデフォルト値制約を設定します。値が 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

お役に立てれば

于 2013-10-30T08:31:24.997 に答える
1

パフォーマンスを向上させるために、テーブル スキーマを変更した方がよいと思います。

以下に示すようにテーブルスキーマを変更して、デフォルト値を組み込むことができます。

ALTER TABLE myTbl
ALTER COLUMN Univesity SET DEFAULT 'Aviation'

PSストアドプロシージャのみを使用する必要がある場合は、上記の回答を参照できます。

于 2013-10-30T08:31:10.443 に答える
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);

次の 2 つの方法で使用できます。

EXEC MyProc 'Bob', 'Brown'
EXEC MyProc 'Kate', 'Dylan', 'Economic'
于 2013-10-30T08:24:14.433 に答える
0

insert into ステートメントの前に次を挿入するだけです。

@university が null の場合 @university = null を設定

于 2013-10-30T08:25:48.933 に答える
0

値を挿入するときに、パラメーター チェックを含めることができます。値を指定していない場合は、「航空」がデフォルトとして設定されます

insert into #MyTbl (FirstName,LastName,University) values(@firstname,@lastname,isnull(@university, 'Aviation'))

ありがとう

于 2013-10-30T12:59:32.987 に答える