Linq to sql-gespeicherte Prozedur Rückgabewert
Habe ich die folgende gespeicherte Prozedur in SQL Server 2005-Datenbank (gedacht einfach nur zurück die Größe der Datenbank in MB).
ALTER PROCEDURE [dbo].[dbSize]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sizeMb int
DECLARE @DB_NAME varchar(100)
SELECT @DB_NAME = DB_NAME()
SELECT @sizeMb = (size*8)/1024 FROM sys.master_files
WHERE DB_NAME(database_id) = @DB_NAME
AND Name = @DB_NAME
RETURN @sizeMb
END
Wenn ich dies in SQL Server Management Studio, es funktioniert richtig, Rücksendung der aktuelle DB-Größe in MB an.
Möchte ich, dass dies innerhalb einer Anwendung, also habe ich ihn Hinzugefügt, um eine linq to sql datacontext, das generiert den folgenden code:
[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.dbSize")]
public int dbSize()
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((int)(result.ReturnValue));
}
Rufe ich es so auf:
int dbSize = db.dbSize();
Jedoch, es gibt nur null, nie etwas anderes. Keine Ausnahmen irgendwelcher Art geworfen werden.
Ich experimentierte mit der Auswahl eines Ergebnis-und Ausgabeparameter zu verwenden, aber das hat auch nicht geholfen (der output-parameter auf null gesetzt). Irgendwelche Vorschläge?
InformationsquelleAutor Mansfield | 2012-06-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe laufen in das gleiche problem. So dumm wie es klingt, haben Sie, um eine einzelne Zeile zurückgeben, mit single-Spalte, in der Ihr Wert von einem gespeicherte Prozedur. L2S nicht so etwas wie
ExecuteScalar(...)
.Wenn Sie eine UDF, haben Sie mehr Glück. Dieser Beitrag spricht das problem sehr schön.
Nicht mit einem Ausgabe-Parameter, Nein. Ein scalar-valued-UDF sollte funktionieren.
Muss ich greifen auf eine UDF? Ich habe noch eine SP in der Anwendung, ich bin mit in der exakt gleichen Art und Weise und es funktioniert gut (es hat vier output-Parameter)
Ich habe versucht, mit einem UDF-und ich habe das gleiche problem, nur gibt null zurück...
Habe ich gerade gefunden dieser Beitrag , vielleicht klären Sie Ihr problem.
InformationsquelleAutor bluevector