2016-08-07 35 views
1

私のストアドプロシージャはの変換エラーデータ型varchar型は、ストアドプロシージャでエラーをintに

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[Customer_Registrations] 
    @type varchar(50) = null, 
    @Customer_ID int = null, 
    @Customer_Name varchar(50) = null, 
    @Email varchar(50) = null, 
    @Password varchar(50) = null, 
    @Mobile varchar(50) = null 
AS 
BEGIN 
    SET NOCOUNT ON; 

    IF @type = 'select' 
    BEGIN 
     SELECT * 
     FROM ssshub..Customer_Master 
    END 

    IF @type = 'specific' 
    BEGIN 
     SELECT * 
     FROM ssshub..Customer_Master 
     WHERE Customer_ID = @Customer_ID 
    END 

    IF @type = 'insert' 
    BEGIN 
     INSERT INTO [dbo].[Customer_Master]([Customer_Name], [Email],[Password], [Mobile], [SDate]) 
     VALUES ('@Customer_Name', '@Email', '@Password', '@Mobile', CURRENT_TIMESTAMP) 
    END 
END 

ですそして、私のテーブル

これが機能しているファイン

このクエリは正常に動作しますが、私がしようとしているときストアドプロシージャを使用して挿入すると、エラーがスローされます。

私は、私は次の文

exec customer_registrations 'insert', 'dsad', '[email protected]', 'pass', '9999900000' 

と私のストアドプロシージャを実行しようとしていたときに

INSERT INTO [dbo].[Customer_Master] ([Customer_Name], [Email], [Password], [Mobile], [SDate]) 
VALUES('ewcewc', '[email protected]', 'dewdwd', '9999999999', CURRENT_TIMESTAMP) 

は、今私が手にそれを挿入するので、不要にcustomer_idためidentity仕様があります

データ型varcharをintに変換する際のエラー

+0

問題は、列CUSTOMER_NAME –

答えて

0

データをテーブルに挿入する際に、NULL値を渡してください。テーブルにデータを挿入するときに、以下の手順を実行します。プロシージャのすべてのパラメータを管理する必要があります。あなたはCustomer_IDという値を渡さないので、エラーが発生します。

EXEC [dbo].[Customer_Registrations] 'insert',null,'ewcewc', '[email protected]', 'dewdwd', '9999999999' 
+0

これはうまくいきました、ありがとう –

3

パラメータであなたの引数をアップ裏地:

'insert'   -> @type varchar(50) 
'dsad'   -> @Customer_ID int  
'[email protected]' -> @Customer_Name varchar(50) 
'pass'   -> @Email varchar(50) 
'9999900000'  -> @Password varchar(50) 
        -> @Mobile varchar(50) = null 

...あなたは'dsad'intとして理解されている方法がないことがわかります。たぶんどこかに問題があるかもしれませんが、少なくともストアドプロシージャは正しく呼び出されていません。

更新

あなたの目的は、特定の場合には関連していない一部の引数を省略した場合は、名前付きパラメータを使用する必要があります。そうでない場合、引数はパラメータが表示されるのと同じ順序でのみ適用できます。

exec customer_registrations 
    'insert', 
    @Customer_Name = 'dsad', 
    @Email   = '[email protected]', 
    @Password  = 'pass', 
    @Mobile  = '9999900000'; 
+0

であるが、クエリに挿入するとき、それはあなたが「CUSTOMER_ID」それが動作する方法を指定did'tあなたのINSERTクエリで –

+0

に動作します。私の知る限り、プロシージャでint型にnvarchar値を渡すことはできません。ストアドプロシージャのintデータ型が –

+0

であるプロシージャ内のその場所のパラメータが、customer_id –

関連する問題