Wenn ich die gespeicherte Prozedur unten in SMSS ausführe, funktioniert es und gibt ein nettes Ergebnis zurück.Gespeicherte Prozedur funktioniert, aber gibt ungültige Spalte in C#
SQL:
EXEC @return_value = [dbo].[xxxxxx_EnergiAllTags]
@SegmentResponseID = 'xxxxxxxxxx'
Aber wenn ich versuche, die gespeicherte Prozedur von meinem C# Code auszuführen, erhalte ich eine Fehlermeldung:
public DataSet GetQuery(string batchNr)
{
SqlConnection conn = new SqlConnection("xxxxxxxx");
SqlCommand command = new SqlCommand("xxxxxx_EnergiAllTags", conn);
SqlDataAdapter da = new SqlDataAdapter(command);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@SegmentResponseID", batchNr));
DataSet ds1 = new DataSet();
command.CommandTimeout = 60000;
try
{
da.Fill(ds1);
return ds1;
}
catch (Exception e)
{
string ex = e.Message;
throw;
}
}
:
Invalid column name 'Value'
Dies ist mein Code
Kann jemand, der eine Ahnung haben könnte, mir helfen herauszufinden, was das Problem ist?
****-Update als Anf *****
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[xxxxxx_EnergiAllTags]
@SegmentResponseID AS VARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #temp (TagName NVARCHAR(MAX),
StartValue NVARCHAR(MAX),
EndValue NVARCHAR(MAX),
Usage NVARCHAR(MAX)
)
INSERT INTO #temp
EXEC [dbo].[xxxxxx_EnergyTagForBatch] @BatchID = @SegmentResponseID,
@TagName = 'T06C02D01E02FQ000.PV'
INSERT INTO #temp
EXEC [dbo].[xxxxxx_EnergyTagForBatch] @BatchID = @SegmentResponseID,
@TagName = 'T06C02D01E02FQ001.PV'
SELECT * From #temp
DROP TABLE #temp
END
Können Sie den Code von 'xxxxxx_EnergiAllTags' teilen und welche Ausgabe erwarten Sie, dass er zurückkommt? –
Ich denke, wir müssen auch den Code der gespeicherten Prozedur sehen. Haben Sie eine Spalte namens "Value"? Wenn ja, versuche es mit eckigen Klammern zu umbrechen - '[Value]'. –
Wert ist ein Schlüsselwort in t-sql, verwenden Sie eckige Klammern für diese Typnamen, z. B. [Wert]. – SeM