SQL Server - T - SQL aprendiendo

 
Vista:

T - SQL aprendiendo

Publicado por Oscar (16 intervenciones) el 22/09/2007 18:51:40
Saludos a todos los programadores y administradores de base de datos
grasias por su atencion a todos en general

Bueno soy programador que hasta haora estoy utilizando una base de datos mas potente que access y estoy actualizandome en T - SQL y tengo un procedimiento almacenado que lo quiero llamar desde VB6 cosa que lo hago bien pero dengo una buda si utilizo la palabra clave PRINT para el analizador de consultas tando en SQL SERVER 2000 y 2005
la consulta me funciona bien pero si deseo llamarlo desde visual basic me manda un error no se si se podra utilizar otro comando o como puedo hacer realmente aqui no tengo al lacance este precedimiento pero boy a bar un ejemplo de que es lo que quiero
yo se que hay que declara variables talves este no funcione error de sintaxis pero mas que todo lo que quiero saber si print solo es para el analizador de consultas y si es asi que otro comando podria utilizar enves de

CREATE PROVEDURE Consultar_Periodos AS

DECLARE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Yo mismo pregunta incompleta [ continuacion ]

Publicado por OSCAR (16 intervenciones) el 22/09/2007 19:10:39
Perdon que deje la pregunta incompleta fuer error dedo o de enter

No se si me falta algo si escribi mal algo pero en sql server tanto en 2000 asi como en 2005 el T-SQL que yo tengo me funciona bien no tengo ningun problema EL PROBLEMA ES QUE creo que el PRIMT me esta matando y lo que quiero saber es si hay otra forma otro codigo o que puedo hacer ya que creo que si nesesito un cursor

Aqui no esta completo el T -SQL que realmente elabore , el que yo tengo tiene tres cursores para no hacer mas largo el asunto solo lo dijito 2 cursores:
bueno muchas grasias por su atencion

CREATE PROVEDURE Consultar_Periodos AS

DECLARE cCuentas CURSOR KEYSET OPTIMISTIC
FOR SELECT Codigo , Cuenta FROM TblCuentas

OPEN cCuentas

FETCH FIRST FROM cCuentas INTO @Codigo, @Cuenta

WHILE @@FETCH_STATUS = 0
BEGIN

PRINT 'Codigo' + COVERT(CHAR(3) , @Codigo + 'CUENTA' + @Cuenta

DECLARE cPeriodo CURSOR KEYSET OPTIMISTIC
FOR SELECT Codigo , Periodo FROM TblPeriodo

FETCH FIRST FROM cPeriodo INTO @PERIODO

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'PERIODO' + @PERIODO
FETCH NEXT FROM cPeriodo INTO @PERIODO
END
CLOSE cPeriodo
DEALLOCATE cPeriodo

FETCH NEXTFROM cCuentas INTO @Codigo, @Cuenta

END

CLOSE cCuentas
DEALLOCATE cCuentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Yo mismo pregunta incompleta [ continuacion ]

Publicado por Isaias (3308 intervenciones) el 24/09/2007 20:53:35
Si mandas a ejecutar tu STORE PROCEDURE desde un VB, el comando PRINT, solo sirve para cuando se ejecuta desde el ANALIZADOR DE CONSULTAS.

Para obtener el resultado en un RECORDSET desde VB, debes hacerlo mediante un SELECT:

SELECT 'Codigo' + COVERT(CHAR(3) , @Codigo + 'CUENTA' + @Cuenta

Pero, como estas utilizando dicho comando en un BUCLE, entonces seria muy dificil estar "cachando" ese SELECT por cada ciclo cumplido, ahora bien, estas declarando 2 cursores (cosa que es muy dañina para tu servidor), me pregunto, ¿Para que?, no hacen nada, excepto el PRINT y ya.

¿Cual es al idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Muchas Grasias

Publicado por Oscar (4 intervenciones) el 26/09/2007 04:14:25
Muchas Grasias

Bueno la verdad no se mucho sobre sql server solo e benido manejando manejo access y yo si puedo elaborar la consulta desde visual basic por medio de un recordset pero e leido que se supone que desde sql server y con un procedimiento almacenado quien realiza todo el trabajo es el servidor y no el cliente , asumiendo que tengo un buen servidor con sql server 2005 o 2000
lo que no savia es que el repetir mucho con un cursor lo hacia mas lento

Pero si usted me dice que mejor abrir un recordset en el cliente y que es mejor pues mejor boy a abrirlo con un recorset las tablas son 3 Maestro Detalle y el detalle tiene asu vez otra tabla que es detalle secundario o detalle del detalle y esto hace que con un select no se si se pueda pues lo unico que se me ocurrio ya que estoy aprendiendo a utilizando T - SQL fue eso le boy las grasias por su respuesta

Para terminar solo queria preguntarle si mejor elaboro la consulta en Visual Basic en vez de utilizar T - SQL muchisimas grasias le agradesco enormemente por aclarame lo de el PRINT
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Muchas Grasias

Publicado por Isaias (3308 intervenciones) el 26/09/2007 20:19:46
Oscar

Un RECORDSET en VB, es un arreglo dinamico de registros, donde se alojan las respuestas de la base de datos.

Debes DECLARARLO en VB y una vez que ejecutas tu procedimiento (consulta), el resultado estara en dicho RECORDSET, para que tu en el fron, le des el correspondiente tratamiento.

Te recomiendo esta pagina donde se tocan estos y otros temas.

http://www.elguille.info/vb/default.aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar