valor stored retorno retornar procedimiento parametros obtener fecha ejecutar desde consultar consulta con como almacenado sql sql-server asp-classic

sql - stored - Edad no devuelta al ejecutar una consulta



retornar valor stored procedure sql server (1)

Como @ar34z ha señalado en los comentarios;

"no estás seleccionando la columna, pero estás creando una nueva"

Una vez que agrega cualquier cálculo a un campo en una tabla, está creando lo que se conoce como "Columna DateOfBirth " o "Expresión" , especificar DateOfBirth como un campo con nombre no va a funcionar porque ADO no sabe acerca de la columna DateOfBirth solo una columna calculada sin nombre.

Idealmente, debe usar un alias para que las columnas calculadas sean más fáciles de reconocer

SELECT DATEDIFF(yyyy, DateOfBirth, GETDATE()) [DateOfBirth] FROM employees

o

SELECT DATEDIFF(yyyy, DateOfBirth, GETDATE()) AS [DateOfBirth] FROM employees

ambos funcionan bien con SQL Server y nunca han tenido problemas al usar cualquiera de las variantes.

Como la columna calculada está devolviendo la edad (no la fecha de nacimiento) , podría alias la columna [Age] luego usar <%= rs("Age") %> para ADODB.Recordset desde ADODB.Recordset .

Nota al margen: Como @ damien-the-unbeliever ha mencionado en los comentarios que su cálculo de Age no es muy preciso, curiosamente en este punto hay una pregunta completamente diferente en StackOverFlow con algunas respuestas interesantes (simplemente no acepte la respuesta aceptada como evangelio) .

  • Cómo calcular la edad (en años) según la fecha de nacimiento y getDate ()

Tal como está (y esta es solo mi opinión personal), esta respuesta ( https://stackoverflow.com/a/1572938/692942 ) es la mejor del grupo.

Solo para completar, también puede indicar al ADODB.Recordset que devuelva los campos por posición ordinal en lugar de nombrar al pasar un índice basado en 0 de la posición del campo en este caso.

<%= rs(0) %>

funcionaría y devolvería el primer campo en SELECT .

Tomando todo esto en cuenta, mi solución sugerida (para el problema inmediato) sería;

<% '' calculate age of employee bsql = "SELECT DATEDIFF(yyyy, DateOfBirth, GETDATE()) [Age] FROM employees" Set brs = Server.CreateObject("ADODB.Recordset") brs.open bsql, dbconn, adOpenKeyset, adLockPessimistic Response.Write rs("Age") %>

Notará que he reemplazado valores numéricos en brs.Open() Constantes DLL de ADODB para ver cómo usarlos. Le recomiendo leer el uso de METADATA para importar las constantes DLL .

¿Cuál podría ser el problema aquí cuando ejecuto el siguiente código ya que no devuelve la edad?

<% '' calculate age of employee bsql = "select DATEDIFF(yyyy,DateOfBirth,GETDATE()) from employees " set brs = Server.CreateObject("ADODB.Recordset") brs.open bsql, dbconn, 1,2%> <%=rs("DateOfBirth") %>