Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] SQL Server proporciona numerosas funciones integradas y permite crear funciones definidas por el usuario. En esta pgina se muestra una lista de las categoras integradas. Para obtener ms informacin acerca de las funciones definidas por el usuario, vea Funciones definidas por el usuario (motor de base de datos). Tipos de funciones Funcin Descripcin Funciones de conjuntos de Devuelven un objeto que se puede utilizar como las filas referencias a tablas en una instruccin SQL. Operan sobre una coleccin de valores y devuelven un solo Funciones de agregado valor de resumen. Devuelven un valor de categora para cada fila de una Funciones de categora particin. Operan sobre un valor y despus devuelven otro valor. Las Funciones escalares (se funciones escalares se pueden utilizar donde la expresin describen a continuacin) sea vlida. Funciones escalares Categora de la funcin Funciones de configuracin Descripcin Devuelven informacin acerca de la configuracin actual.
Funciones del cursor Devuelven informacin acerca de los cursores. Llevan a cabo operaciones sobre un valor de entrada de fecha y hora, y devuelven un valor numrico, de cadena o de fecha y hora. Funciones Realizan clculos basados en valores de entrada proporcionados matemticas como parmetros a las funciones y devuelven valores numricos. Funciones de Devuelven informacin acerca de la base de datos y los objetos metadatos de la base de datos. Funciones de Devuelven informacin acerca de usuarios y funciones. seguridad Realizan operaciones en el valor de entrada de una cadena (char Funciones de cadena o varchar) y devuelven una cadena o un valor numrico. Realizan operaciones y devuelven informacin acerca de Funciones del sistema valores, objetos y configuraciones de una instancia de SQL Server. Funciones estadsticas Devuelven informacin estadstica acerca del sistema. del sistema Funciones de texto e Realizan operaciones sobre los valores de entrada o columnas de imagen texto o imagen, y devuelven informacin acerca del valor. Determinismo de funcin
Las funciones integradas de SQL Server son deterministas o no deterministas. Las funciones son deterministas cuando devuelven siempre el mismo resultado cada vez que se llaman con un conjunto especfico de valores de entrada. Las funciones son no deterministas cuando es posible que devuelvan distintos resultados cada vez que se llaman con un mismo conjunto especfico de valores de entrada. Para obtener ms informacin, vea Funciones deterministas y no deterministas Intercalacin de funciones
Las funciones que toman una entrada de cadena de caracteres y devuelven una salida de cadena de caracteres utilizan la intercalacin de la cadena de entrada para la salida. Las funciones que toman entradas que no son de caracteres y devuelven una cadena de caracteres utilizan la intercalacin predeterminada de la base de datos actual para la salida. Las funciones que toman varias entradas de cadena de caracteres y devuelven una cadena de caracteres utilizan las reglas de prioridad de intercalacin para establecer la intercalacin de la cadena de salida. Para obtener ms informacin, vea Prioridad de intercalacin (Transact-SQL). Que es SQL? Funciones Bsicas SQL es un lenguaje universal dedicado a las bases de datos. Es un lenguaje de sintaxis simple y muy potente. Mediante l se puede recorrer, modificar o borrar registros de las
tablas de datos. A continuacin escribi una gua bsica para aprender SQL. Las funciones principales y el modo de utilizacin. Vemoslo ahora: Nota: El asterisco (*) es un comodin, que selecciona todas las columnas dentro de los lmites que pongamos. Propiedad SELECT: Hace la seleccin en una tabla de la BD. SELECT * FROM datos 'Esta sentencia seleccionaria todos, absolutamente todos los registros dentro de la tabla datos. SELECT * FROM datos WHERE usuario='juan' 'Seleccionariamos todos los registros dentro de la tabla datos que tengan como usuario a "Juan". Propiedad INSERT INTO: Agrega un nuevo registro a la tabla elegida INSERT INTO datos (usuario) VALUES ('corsa') 'Insertamos en la tabla datos en la columna usuario, un registro nuevo. INSERT INTO datos (usuario, edad) VALUES ('corsa',20) 'Aqui insertamos 2 registros al mismo tiempo. Propiedad DELETE: Borra registros de nuestra tabla DELETE FROM datos WHERE usuario = 'pedrito' 'Borramos los regitros donde el usuario sea "pedrito". DELETE FROM datos WHERE usuario = 'Mario' AND edad = 16 'Borramos solo los usuario de nombre Mario que tenian 16 aos. Propiedad UPDATE: Actuailiza registros, modificando datos ya existentes. UPDATE datos SET usuario = 'pedrito' 'Esta modificacin renombrar todos los usuaarios a "pedrito". UPDATE datos SET usuario = 'Mario' WHERE edad = 16 'Modificamos solo los registros que tenian 16 aos. Ahora todos los usuario de 16 aos se llaman "Mario". Modo de usar SQL en nuestras bases de datos: Podemos guardar la sentencia SQL en una variable y llamarla para usarla: <% Dim sql, oConn, RS sql = "SELECT * FROM datos" 'Conectamos a la BD.
Set oConn = Server.CreateObject("ADODB.Connection") Set RS = Server.CreateObject("ADODB.RecordSet") oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=D:\Webs\Soloasp\db\mibd.mdb" 'ahora abrimos nuetro RecordSet con los parmetros del sql que pusimos antes. RS.Open sql, oConn, 1 ... 'Este DO WHILE imprimira todos los registros en la columna nombre. Do While not RS.EOF Response.Write RS.Fields("Nombre") RS.MoveNext Loop ... 'Cerramos y limpiamos todo. RS.Close oConn.Close Set RS = Nothing Set oConn = Nothing %>
Parte de definir un tipo nuevo es la definicin de funciones que describen su comportamiento. Como consecuencia, mientras que es posible definir una nueva funcin sin definir un tipo nuevo, lo contrario no es cierto. Por ello describimos como aadir nuevas funciones para Postgres antes de describir cmo aadir nuevos tipos. Postgres SQL proporciona tres tipos de funciones:
funciones de lenguaje de consultas (funciones escritas en SQL) funciones de lenguaje procedural (funciones escritas en, por ejemplo, PLTCL o PLSQL)
funciones de lenguaje de programacin (funciones escritas en un lenguaje de programacin compilado tales como C)
Cada clase de funcin puede tomar un tipo base, un tipo compuesto o alguna combinacin como argumentos (parmetros). Adems, cada clase de funcn puede devolver un tipo base o un tipo compuesto. Es ms fcil definir funciones SQL, as que empezaremos con ellas. Los ejemplos en esta seccin se puede encontrar tambin en funcs.sql y funcs.c.
Ejemplos
Para ilustrar una funcin SQL sencilla, considere lo siguiente, que se podra usar para cargar en una cuenta bancaria:
create function TP1 (int4, float8) returns int4 as 'update BANK set balance = BANK.balance - $2 where BANK.acctountno = $1 select(x = 1)' language 'sql';
Un usuario podra ejecutar esta funcin para cargar $100.00 en la cuenta 17 de la siguiente forma:
select (x = TP1( 17,100.0));
El ms interesante ejemplo siguiente toma una argumento sencillo de tipo EMP, y devuelve resultados mltiples:
select function hobbies (EMP) returns set of HOBBIES as 'select (HOBBIES.all) from HOBBIES where $1.name = HOBBIES.person' language 'sql';
Notar que definimos una lista objetivo para la funcin (con el nombre RESULT), pero la lista objetivo de la consulta que llam a la funcin sobreescribi la lista objetivo de la funcin. Por esto, el resultado se etiqueta answer en vez de one. Es casi tan fcil definir funciones SQL que tomen tipos base como argumentos. En el ejemplo de abajo, note cmo nos referimos a los argumentos dentro de la funcin como $1 y $2:
CREATE FUNCTION add_em(int4, int4) RETURNS int4 AS 'SELECT $1 + $2;' LANGUAGE 'sql'; SELECT add_em(1, 2) AS answer; +-------+ |answer | +-------+ |3 | +-------+
Note el uso de la sintaxis $1.salary. Antes de adentrarnos en el tema de las funciones que devuelven tipos compuestos, debemos presentar primero la notacin de la funcin para proyectar atributos. La forma sencilla de explicar esto es que podemos normalmente usar la notacin atributo(clase) y clase.atributo indistintamente:
--- esto es lo mismo que: -- SELECT EMP.name AS youngster FROM EMP WHERE EMP.age < 30 -SELECT name(EMP) AS youngster FROM EMP WHERE age(EMP) < 30; +----------+ |youngster | +----------+ |Sam | +----------+
Como veremos, sin embargo, no siempre es este el caso. Esta notacin de funcin es importante cuando queremos usar una funcin que devuelva una nica instancia. Hacemos esto embebiendo la instancia completa dentro de la funcin, atributo por atributo. Esto es un ejemplo de una funcin que devuelve una nica instancia EMP:
CREATE FUNCTION new_emp() RETURNS EMP AS 'SELECT \'None\'::text AS name, 1000 AS salary, 25 AS age, \'(2,2)\'::point AS cubicle' LANGUAGE 'sql';
En este caso hemos especificado cada uno de los atributos con un valor constante, pero cualquier computacin o expresin se podra haber sustituido por estas constantes. Definir una funcin como esta puede ser delicado. Algunos de las deficiencias ms importantes son los siguientes:
La orden de la lista objetivo debe ser exactamente la misma que aquella en la que los atributos aparezcan en la orden CREATE TABLE (o cuando ejecute una consulta .*). Se debe encasillar las expresiones (usando ::) muy cuidadosamente o ver el siguiente error:
WARN::function declared to return type EMP does not retrieve (EMP.*)
Al llamar a una funcin que devuelva una instancia, no podemos obtener la instancia completa. Debemos o bien proyectar un atributo fuera de la instancia o bien pasar la instancia completa a otra funcin.
SELECT name(new_emp()) AS nobody; +-------+ |nobody | +-------+ |None | +-------+
La razn por la que, en general, debemos usar la sintaxis de funcin para proyectar los atributos de los valores de retorno de la funcin es que el parser no comprende la otra sintaxis (dot) para la proyeccin cuando se combina con llamadas a funciones.
SELECT new_emp().name AS nobody; WARN:parser: syntax error at or near "."
Cualquier coleccin de ordenes en el lenguaje de consulta SQL se pueden empaquetar juntas y se pueden definir como una funcin. Las ordenes pueden incluir updates (es decir, consultas INSERT, UPDATE, y DELETE) as como SELECT. Sin embargo, la orden final debe ser un SELECT que devuelva lo que se especifique como el tipo de retorno de la funcin.
CREATE FUNCTION clean_EMP () RETURNS int4 AS 'DELETE FROM EMP WHERE EMP.salary <= 0; SELECT 1 AS ignore_this' LANGUAGE 'sql'; SELECT clean_EMP(); +--+ |x | +--+ |1 | +--+
Richard Silva Re: FUNCION CONVERT-SQL Cul es el formato del campo string [sql_date]? Dependiendo de eso puedes elaborar la consulta si hacer la conversin.
Mensajes: n/a
Parameters nYear Specifies the year returned in the year 2000-compliant Date value. nYear can be a value from 100 to 9999. nMonth Specifies the month returned in the year 2000-compliant Date value. nMonth can be a value from 1 to 12. nDay Specifies the day returned in the year 2000-compliant Date value. nDay can be a value from 1 to 31. " La funcin CTOD( ) tambin te permite hacer la conversin, sin embargo puede retornar valores de fecha ambiguos. En resumen, para usar la funcin Date( ), debers extraer el Ao, el Mes y el Da de la Fecha. Luego, la consulta quedara algo como: ' lnYear es el Ao convertido a entero ' lnMes es el Mes convertido a entero ' lnDia es el Da convertido a entero SQL="Select * from TABLA where Date( lnYear, lnMes, lnDia ) between " & fecha1 & " and " & fecha2
Espero te sea til -Saludos, Richard. "pepe" <p_e_p_e_aa***yahoo.com.ar> escribi en el mensaje news:eac9c04d-9d8f-417b-8d9f-2bad5f0f56d2***u14g2000yqg.googlegroups.com... Gente del foro de Foxpro; necesitara saber si existe una funcion CONVERT para convertir un campo de una tabla de un tipo string a uno date. Me explico; tengo un campo de tipo texto que contiene una fecha, por lo que para filtrar por ese campo, tengo que convertirlo a DATE (En otros motores existe para esto la funcion CONVERT, SQL_CONVERT, cDate, CCDATE, etc; pero en el motor de SQL de foxpro no
conozco cul es la funcin y en que formato de fecha devuelve tal conversin) Ejemplo de lo que necesito... SQL="Select * from TABLA where convert(campoTexto, sql_date) between " & fecha1 & " and " & fecha2 Quiero saber que formato de fecha devuelve el convert (si existe tal funcion en visualFoxPro) si yyyy-mm-dd, o dd-mm-yyyy, o mm-dd-yyyy... Desde ya agradezco su valiosa ayuda.Saludos pp
simple ejemplo de la funcin Max de Sql para obtener de una tabla el valor mximo para una columna.
El siguiente cdigo utiliza Ado para conectarse a una base de datos Access, y mediante una simple funcin , obtiene el valor mximo para un campo, en este caso llamado Id ( no es autonumrico) y le suma uno para luego aadir mediante la instruccin INSERT INTO de sql , el valor
Controles :
Aadir la referencia a Ado desde el men de referencias de vb Un Commandbutton para aadir un registro nuevo El campo , en este caso llamado Id debe ser numrico
48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99.
' funcin de tipo Long que retorna _ el valor maximo para el campo indicado + 1 ''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Function Maximo_Valor( _ Tabla As String, _ Campo As String, _ Conexion As ADODB.Connection) As Long Dim rs As ADODB.Recordset Dim sql As String ' Comando Sql para usar la funcin Max y retornar en n_Maximo el valor sql = "SELECT MAX([" & Campo & "]) As n_Maximo FROM " & "[" & Tabla & "]" ' Ejecutar el comando Set rs = cn.Execute(sql) ' comprobar si el valor no es un valor Nulo If IsNull(rs!n_Maximo) Then ' si es nulo retornamos 0 Maximo_Valor = 0 Else ' retornar el MAX + 1 Maximo_Valor = rs!n_Maximo + 1 End If ' libear el recordset If rs.State = adStateOpen Then rs.Close Set rs = Nothing End Function
Private Sub Form_Load() ' cadena de conexin OLEDB ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\" & "base_de_datos.MDB;" & _ "Persist Security Info=False"
Command1.Caption = "Aadir registro" End Sub Private Sub Form_Unload(Cancel As Integer) ' finalizar la conexin al descargar el formulario
100. 101.
Cuenta(expr)
El marcador de posicinexpr representa una expresin de cadena que identifica el campo que contiene los datos que desea contar o una expresin que realiza un clculo utilizando los datos de ese campo. Los operandos deexpr pueden incluir el nombre de un campo de tabla o una funcin (que puede ser intrnseca o definida por el usuario, pero no puede ser ninguna de las otras funciones de agregado de SQL). Puede contar cualquier clase de datos, incluido texto.
(3)
Devuelven un valor de campo del primer o del ltimo registro en el conjunto de resultados devueltos por una consulta.
una constante o una funcin (que puede ser intrnseca o definida por el usuario, pero no puede ser ninguna de las otras funciones de agregado de SQL).
(3)
Devuelven clculos de la desviacin estndar de una poblacin y una muestra de poblacin para un conjunto de valores de un campo especificado en una consulta.
SUM (FUNCIN)
Sintaxis Sum(expr)
El marcador de posicinexpr representa una expresin de cadena que identifica el campo que contiene los datos numricos que desea sumar o una expresin que realiza un clculo utilizando los datos de ese campo. Los operandos deexpr pueden incluir el nombre de un campo de tabla, una constante o una funcin (que puede ser intrnseca o definida por el usuario, pero no puede ser ninguna de las otras funciones de agregado de SQL). 9Funciones Var y VarP Devuelven clculos de lavarianza de una poblacin o una muestra de poblacin representada como un conjunto de valores de un campo especificado en una consulta.
utilizando los datos de ese campo. Los operandos deexpr pueden incluir el nombre de un campo de tabla, una constante o una funcin (que puede ser intrnseca o definida por el usuario, pero no puede ser ninguna de las otras funciones de agregado de SQL).
(3)
GROUP BY
Combina los registros con valores idnticos, en la lista de campos especificados, en un nico registro. Para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es: SELECTcampos FROM tabla WHERE criterio GROUP BY campos del grupo GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQL agregada en la instruccin SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalan en ninguna de las funciones SQL agregadas. Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la clusula HAVING para filtrar los registros una vez agrupados. A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de campos GROUP BY puede referirse a cualquier campo de las tablas que aparecen en la clusula FROM, incluso si el campo no esta incluido en la instruccin SELECT, siempre y cuando la instruccin SELECT incluya al menos una funcin SQL agregada. Todos los campos de la lista de campos de SELECT deben o bien incluirse en la clusula GROUP BY o como argumentos de una funcin SQL agregada. Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la clusula GROUP BY que satisfaga las condiciones de la clusula HAVING. HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van a mostrar.
La funcin isnull en Sql La funcin isnull es una de las que ms suelo utilizar a menudo. Para que sirve? Para reemplazar los valores nulos por uno que nosotros digamos. Por ejemplo, vamos a imaginar que tenemos una tabla que se llama facturas y un campo que se llama valor. Y queremos una sencilla consulta que nos diga la suma de estas facturas. Aqu haramos algo as: select sum(valor) from facturas Pero claro y que ocurre si ese campo valor tiene nulos? Pues que tendremos problemas... pero para evitarlos tenemos el isnull. Lo que vamos a hacer es decirle que si el campo valor es nulo, lo reemplazaremos por un cero como? as de facil isnull(valor,0) Es decir, le ponemos el nombre del campo y el valor por el que se van a reemplazar los nulos. Con esto, nuestra consulta quedara: select sum(isnull(valor,0)) from facturas Lo bueno del isnull es que se puede emplear casi en cualquier sitio, como por ejemplo en la parte where de la consulta. Por ejemplo, ahora vamos a sacar las facturas que no tengan valor o sea cero: select * where isnull(valor,0)=0 As de sencillo. Con isnull podrs evitar el problemtico uso de los nulos que tantos dolores de cabeza suelen producir.
FUNCION isnull
Introduccin
La funcin IsNull() permite determinar si el valor de un atributo es NULL del DBMS.
Alcance
Objetos: Todos los objetos Lenguajes: C/SQL - Java - Visual Basic Visual FoxPro C# DBMS: SQL Server, Oracle, Informix, DB2 Interfaces: Win/Web
Descripcin
En algunos casos es necesario determinar si el valor de un atributo se corresponde con el NULL del DBMS. Este valor es diferente al nullvalue (obtenido por ej.utilizando la funcin Nullvalue(<Atributo>), que GeneXus determina segn el tipo de dato/DBMS.
El valor NULL en un atributo pudo haberse generado por ej.por no haber instanciado el atributo en un New (teniendo la preference Initialize not referrenced attributes con el valor No). Tambien puede ser necesario distingirlo de otros valores cuando se acceden a tablas externas.
Cuando la funcin se utiliza incluyndola en un Where o Condition que se optimice (esto significa que la condicin se resuelve en el servidor). en la sentencia SQL se traducir como ...Atributo IS NULL.
Sintaxis:
IsNull(<Atributo>)
Retorno:
Valor booleano
Ejemplo
For each Where IsNull(CliNom) .
. Endfor
Este For each navegara los registros de Clientes que tuvieran el atributo CliNom con el valor NULL del DBMS.
Otro ejemplo:
Este ejemplo sera similar al For each anterior, y debera navegar los mismos registros, la diferencia sera que en el primer caso la condicin se resolvera en el servidor, y en el segundo ejemplo se hara en el cliente.
Consideraciones Generales
La utilizacin de la funcin solo es vlida dentro de For eachs y Conditions de subfiles con tabla base.
Para el resto de los generadores y DBMSs, la funcin IsNull() se comporta igual que la funcin Null().