2016-05-06 12 views
-3

これは私の問題の簡略化されたバージョンです。私はSQL Serverクエリの挿入

ProductInformtaionType 

ProductInformationTypeID Name  isText isInteger isDecimal is Boolean 
1       barcode 1  0   0  0 
2       Vatable 0  0   0  1 
3       Quantity 0  1   0  0 

ProductInformtaion 

ProductInformtaion ProductID ProductInformtaionTypeID ValueText ValueInteger ValueDecimal 

私はrelavantフィールドにデータを挿入するINSERTクエリを必要とするいくつかの値を取得

、以下の2つのテーブルを持っています。数量は整数なので、プロダクト情報テーブルにその製品を挿入し、isIntegerfieldのみを取り込む必要があります。

(istext、isInteger、isBooleanの4つの別々の挿入を絞り込むのではなく、正しいフィールドにデータを挿入するにはどうすればよいですか? 、isDecimal)istext = 1句

+1

だから何をされます実際の質問はここですか? –

+1

googleとSQLのINSERTコマンドについて学んでください。 –

+0

SELECTを使用してINSERTします。挿入に必要な列を戻すselectを作成し、型表に結合し、テキスト、整数、10進列にCASEを使用します。テストして、クエリが機能するようにしてから、 'INSERT INTO YourTable(col1、col2、...) 'という接頭辞を付けてください。 –

答えて

0

これで動作します。すべてのパラメータを受け入れるストアドプロシージャを作成します。次に、NULL値を渡します。たとえば、唯一の 'COLUMN3' を挿入するために、あなたが呼び出します。また

Exec dbo.[Test_Stored_Procedure] @Column3 = 'hey!!!' 

を、あなたが行うことができます:ここで

Exec dbo.[Test_Stored_Procedure] @Column1 = null, @Column2 = null, @Column3 = 'hey!!!', @Column4 = null 

は、ストアドプロシージャのコードです:

CREATE PROCEDURE [dbo].[Test_Stored_Procedure] 
    @Column1 varchar(50) = null, 
    @Column2 varchar(50) = null, 
    @Column3 varchar(50) = null, 
    @Column4 varchar(50) = null 
AS 
BEGIN 
    INSERT INTO YourTable 
    VALUES 
    (@Column1, @Column2, @Column3, @Column4) 
END