He creado una función en SQL, ahora necesito usar esa función en mi aplicación C#.¿Cómo puedo llamar a una función de SQL en C#?
He intentado utilizar algo como esto, pero parece que estoy haciendo mal, ya que estoy recibiendo:
Must declare the scalar value '@2064734117'
... cuando doy 2064734117
como primer parámetro y 1
como el segundo parámetro . Aquí está el código que estoy hablando:
SqlConnection con = new SqlConnection(clsDb.connectionString);
string query = string.Format("select Function1(@{0},@{1}) ",
int.Parse(e.CurrentRow.Cells["CodeMeli"].Value.ToString()),1);
con.Open();
SqlCommand cmd = new SqlCommand(query,con);
SqlDataAdapter READER = new SqlDataAdapter();
READER.SelectCommand = cmd;
DataTable table = new DataTable();
READER.Fill(table);
radGridView1.DataSource = table;
con.Close();
Y mi función toma dos parámetros enteros y devuelve una tabla. Lo comprobé en Visual Studio y funcionó, pero no pude hacerlo funcionar en mi aplicación.
y esta es mi declaración de la función:
ALTER FUNCTION dbo.Function1
(
/*
@parameter1 int = 5,
@parameter2 datatype
*/
@ID int,
@clsTypeID int
)
RETURNS TABLE/* @table_variable TABLE (column1 datatype, column2 datatype) */
AS
/*BEGIN */
/* INSERT INTO @table_variable
SELECT ... FROM ... */
RETURN SELECT * FROM tblCLASS2
WHERE STNID = @ID AND CLASSTYPEID = @clsTypeID
/*END */
/*GO*/
Qué errores te va? También una opción es escribir un procedimiento almacenado que llame a su función y simplemente llamar al proceso a través de ado.net/c# – kd7
Este código debería funcionar, ¿qué error está dando? Tenga en cuenta que esta función * no parece * una función, sino que se implementaría mejor en un 'procedimiento almacenado'. Sin embargo, debería funcionar de cualquier manera. –
obtengo un "Debe declarar el valor escalar '@ 2064734117'". cuando doy 2064734117 como el primer parámetro y 1 como el segundo parámetro. – Breeze