2012-06-08 6 views
9

Estoy trabajando en una consulta y he encontrado documentación mínima de Microsoft en la opción TSQL "FOR BROWSE" en una instrucción select.¿Para qué se utiliza la opción TSQL "FOR BROWSE"?

He visto FOR BROWSE documentado como una opción para los cursores, pero no he podido encontrar ningún buen ejemplo de cómo usar esto, o razones para usar FOR BROWSE en una instrucción SELECT.

¿Cuáles son buenas razones para usar FOR BROWSE en una instrucción TSQL SELECT?

estoy usando SQL Server 2008 y 2012.

+1

Eche un vistazo aquí: http://msdn.microsoft.com/en-us/library/ms173812.aspx – Lamak

+0

Sí, lo leí y pude ver que "El modo de exploración le permite escanear las filas en su tabla de SQL Server y actualice los datos en su tabla una fila a la vez "Pero, ¿cómo funciona esto? ¿Utilizaría esto si estuviera emitiendo instrucciones de actualización mientras recorro el conjunto de resultados? –

Respuesta

7

Por lo que yo puedo decir. Parece ser una interfaz para implementar optimistic concurrency control dentro de una aplicación donde uno o más usuarios accederán y actualizarán datos de la misma fuente al mismo tiempo. También parece funcionar en conjunción con una biblioteca frontal compatible (DB-Library). Sin embargo, parece que este es un mecanismo un poco obsoleto ya que puede lograr todo lo anterior sin utilizar la instrucción "For Browse". Esto puede confirmarse aún más por la necesidad de crear dos estructuras DBPROCESS que son el resultado de la llamada DB-Library (una biblioteca C obsoleta) "dbopen".

Además, el modo de exploración requiere dos estructuras DBPROCESS: una para la selección de los datos y otro para la actualización de la base de los datos seleccionados. src

Here is an example de utilizar una consulta "Para Navegar" en conjunción con el DB-Library.

En última instancia, sería razonable concluir que este mecanismo todavía existe con el propósito de compatibilidad con versiones anteriores. Así que, a menos que esté manteniendo un cliente basado en C usando DB-Library, no me preocuparía demasiado por este sql "for clause".

Algunas otras fuentes

una observación más

Los cursores declarados con FOR BROWSE deben esperar los cambios no confirmados (realizados por cualquier persona, incluido el propietario del cursor) solo durante la operación ABRIR CURSOR. Después de que el cursor esté abierto, los cambios posteriores no hacen que el cursor espere. Cuando se vuelve a abrir un cursor, se puede bloquear mediante cambios no confirmados. src

1

Al añadir PARA EXAMINAR para una instrucción SQL SELECT o usando SET NO_BROWSETABLE ON en una conexión de SQL Server pueden ser necesarios para recuperar información de esquema más elaborado.

Esto puede ser útil si una aplicación interactúa directa o indirectamente a través de la capa ODBC con SQL Server porque algunos de los detalles devueltos por la función ODBC SQLColAttribute devolverán una cadena vacía a menos que SQL SELECT tenga for FOR BROWSE adjunto.

Por ejemplo, si su aplicación C++ usa libodbc++ y obtiene un conjunto de resultados de la consulta SELECT * FROM A, B, no podrá recuperar los nombres de tabla de las columnas del objeto ResultSetMetaData. Sin embargo, si agrega FOR BROWSE, los nombres de la tabla se completarán correlativamente.

Cuestiones relacionadas