2009-02-06 11 views

Respuesta

8

No, no puedes. El método ExecuteScalar() está diseñado para devolver como único valor que se devuelve en un conjunto de resultados. Básicamente, el valor en la primera columna de la primera fila regresó.

Para obtener el valor de retorno, debe agregar un parámetro a su objeto SQLCommand. Use el nombre "@RETURN_VALUE" y especifique una dirección de parámetro de Return al crear el objeto de parámetro. Luego puede usar el método ExecuteNonQuery().

Debo señalar que los valores devueltos del procedimiento almacenado IMO deberían simplemente indicar el estado del procedimiento. Todos los datos deben devolverse a través de conjuntos de resultados o parámetros de salida.

3

Para responder a su otra pregunta, (int) es un molde que, en realidad, es diferente de una conversión (Convert.ToInt32).

En un molde, usted está diciendo que el objeto que se está fundiendo es realmente del tipo que se va a lanzar, por lo que no se realiza ninguna conversión/análisis real. Como un int no puede ser nulo, el elenco no es válido cuando el objeto que está lanzando es nulo y se lanza la excepción.

Con la conversión se realiza un análisis real y se lleva a cabo la lógica y se maneja la situación donde el objeto que se está convirtiendo es nulo.

Hay más información acerca de esto here.

Cuestiones relacionadas