Fehler beim konvertieren von Datentyp varchar in int Fehler in der gespeicherten Prozedur
Meine gespeicherten Prozedur ist
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
Und mein Tisch
Dies ist in Ordnung, die
Diese Abfrage funktioniert einwandfrei, aber wenn ich versuche, fügen Sie es mithilfe der gespeicherten Prozedur erzeugt einen Fehler.
Ich habe eine identity
Spezifikation für customer_id
auf, so dass keine Notwendigkeit, um es einzufügen
INSERT INTO [dbo].[Customer_Master] ([Customer_Name], [Email], [Password], [Mobile], [SDate])
VALUES('ewcewc', '[email protected]', 'dewdwd', '9999999999', CURRENT_TIMESTAMP)
Nun, wenn ich versuche, führen meine gespeicherten Prozedur mit der folgenden Anweisung
exec customer_registrations 'insert', 'dsad', '[email protected]', 'pass', '9999900000'
Bekomme ich:
Fehler beim konvertieren von Datentyp varchar in int
- Das problem mit Spalte Customer_name
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte übergeben Sie null-Wert in der Prozedur beim einfügen der Daten in Tabelle. Führen Sie die Prozedur unten Weg, während das einfügen von Daten in der Tabelle. Sie sollte mir die Verwaltung aller parameter der Prozedur. Sie sind nicht den übergebenen Wert von
Customer_ID
, so dass die Art und Weise Fehler auftreten.Futter auf Ihrer Argumente mit der Parameter:
...können Sie sehen, dass
'dsad'
hat keine Möglichkeit, verstanden zu werden, alsint
. Vielleicht gibt es ein problem an anderer Stelle als gut, aber zumindest wird die gespeicherte Prozedur nicht aufgerufen wird, richtig.Update:
Wenn Ihre Absicht war, weglassen einige Argumente, die nicht relevant sind, in einem bestimmten Fall, Sie müssen benannte Parameter verwendet werden; andernfalls Argumente können nur angewendet werden in der gleichen Reihenfolge die Parameter erscheinen: