etwas wirklich komisches heute zurückgeben.ExecuteStoreCommand kann keine Zeichenfolge mit SqlParameter Ausgabe
Wenn ich versuche, eine gespeicherte Prozedur in SQL Server mit der objectContext
von Entity Framework mit der Funktion ExecuteStoreCommand
aufrufen, versucht es immer zu 'String' Wert in 'Int' zu konvertieren .. Ich weiß nicht warum.
Auch wenn ich den Ausgang als NvarChar
Typ festlegen.
Meine Ausnahme ist
konnte nicht varchar Wert 'text' Umwandlung
Datentyp Hier int ist mein C# -Code:
public virtual string GetCardCodeLinkedToAttestation(string atBuisnessCode)
{
// Input param - String
SqlParameter atBuisnessCodeParameter = new SqlParameter("atBuisnessCode", atBuisnessCode);
// The output param - String
SqlParameter retval = new SqlParameter("retval", SqlDbType.NVarChar,15);
retval.Direction = ParameterDirection.Output;
((IObjectContextAdapter)this).ObjectContext.ExecuteStoreCommand("exec @retval = sp_GetCardCodeLinkedToAttestation @atBuisnessCode", atBuisnessCodeParameter, retval);
return (string)retval.Value;
}
Hier ist meine gespeicherten Prozedur in SQL Server (ich gebe explizit 'test' zurück, um sicherzustellen, dass es sich um eine Zeichenfolge handelt):
ALTER PROCEDURE [dbo].[sp_GetCardCodeLinkedToAttestation]
@atBuisnessCode nvarchar(9)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @retval varchar(15);
set @retval= '';
-- Insert statements for procedure here
SET @retval = (SELECT TOP 1 [CardCode]
FROM [SC-SAP01].[SWC_PROD].[dbo].[OCPR]
WHERE [U_Attestation] = @atBuisnessCode)
RETURN 'test';
END
GO
Ausnahme:
Fehler beim VARCHAR Wert 'Text' Umwandeln in int Datentyp
ich versuchte, den Wert ohne Rückkehr zu setzen es und erklären die Ausgabe in Meine gespeicherte Prozedur, aber der zurückgegebene Wert ist immer NULL.
Der Rückgabetyp für gespeicherte Prozeduren ist immer "int". Wenn Sie eine Zeichenkette wollen, verwenden Sie einen 'output' Parameter oder platzieren Sie ihn in einer Ergebnismenge - verwenden Sie nicht' return'. Außerdem sollten Sie vermeiden, 'sp_' als Präfix zu verwenden, wenn Sie Ihre gespeicherten Prozeduren benennen - es ist für die Systemprozeduren von Microsoft reserviert. –