2017-11-06 2 views
0

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 
+0

Können Sie den Code von 'xxxxxx_EnergiAllTags' teilen und welche Ausgabe erwarten Sie, dass er zurückkommt? –

+0

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]'. –

+0

Wert ist ein Schlüsselwort in t-sql, verwenden Sie eckige Klammern für diese Typnamen, z. B. [Wert]. – SeM

Antwort

0

Okay, ich habe das Problem gelöst.

Die 2 SP Ich habe beide eine Temp-Tabelle namens #temp und während ich glaube, dass sie in jeder Instanz lokalisiert werden sollten, waren sie nicht, und gemischt, und zu dieser Zeit gaben sie einen Fehler.

Lösung, stellen Sie sicher, dass es keine temporären Tabellen mit demselben Namen in der Zeichenfolge der gespeicherten Prozedur, die Sie aufrufen können.

Verwandte Themen