2017-08-15 7 views
0

テーブルに存在する場合は、列を更新する動的クエリを作成しています。更新クエリが実行されているときにエラーが発生します。 「varchar型の値を変換するアップデート製品はProductSellingPrice =((単価* [GSTRATEの%]を設定すると、変換が失敗した動的クエリが目的の結果を提供していません

- :手順を以下に示し

Create Procedure spr_UpdateColumnWithTotalPrice 
@id int 
as 
begin 

if not exists 
(
    Select * from INFORMATION_SCHEMA.COLUMNS 
    where TABLE_NAME = 'Product' 
    and 
    COLUMN_NAME = 'ProductSellingPrice' 
) 
Begin 
    Declare @SellingPrice varchar(max) 


    Set @SellingPrice = 'Alter table Product add ProductSellingPrice int' 
    Exec(@SellingPrice) 

    Print 'Table altered' 
End 
Else 
Begin 
     Set @SellingPrice = 'Update Product set ProductSellingPrice = ((UnitPrice * [GSTRATE%]/100) + UnitPrice) where ProductID = @id' 
     Exec(@SellingPrice) 
     Print 'Table updated' 
End 

エンド

私は、次の結果を取得しています/ 100)+ UnitPrice)ProductID = @id 'をデータ型intに設定します。

助けてくださいと感謝事前に

+0

あなたが投稿した正確なクエリは、あなたが得ていると言うエラーを生成しません。 –

答えて

2

代わりにこれを試してみてください:

Set @SellingPrice = 'Update Product set ProductSellingPrice = ((UnitPrice * [GSTRATE%]/100) + UnitPrice) where ProductID = '+ CAST(@id as varchar(13)) 

SQL Serverが暗黙的に変換しようとしますので、あなたは、文字列にint型を連結する+を使用することはできません文字列をintに変換します。
これは、明示的にintを文字列に変換する必要がある理由です。

+0

それは動作し、案内のためにありがとう –

+0

[喜んで助ける: - )](http://meta.stackoverflow.com/questions/291325/how-to-show-appreciation-to-a-user-on-stackoverflow/291327 #291327) –

+0

@RamandeepSingh。 。 。あなたの問題を解決したら、この回答を受け入れるべきです。 –

関連する問題