Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - crisoof

#21
que llevas hecho?, alguna duda sobre el codigo para tu trigger? o solo esperas que te den el codigo ya listo? :laugh: :laugh: :laugh: :laugh: :laugh:
#22
tu primera consulta esta mal, deberías igualar



    select v.codven,
           v.nombre,
           count(f.cliente)
      from vendedores v, facturas f
     where v.codven = f.VENDEDOR
  group by v.codven


la query que tu tienes no tiene bien la condicion, igualas v.codven con f.cliente

deberias igualar el codven con el codigo de vendedor en este caso vendedor de la tabla factura, si no es el mismo dato que en la tabla vendedor debes hacer el join que te indique antes, cruzar 3 tablas

tambien te aconsejaria uses para hacer un join los inner join para que puedas programar mas ordenado y no te compliques mas adelante

saludos
#23
A)la primera respuesta esta mal, tienes que hacer un join entre 3 tablas, clientes, vendedores y facturas las condiciones de igualdad deben ser las correctas, tu estas igualando el cod_vendedor con el cod_cliente

b)la pregunta b tbn son 3 tablas, las tablas son vendedores, provincias y pueblos

c) tienes que cruzar las tablas cliente,factura,pueblo, provincia

d) aqui tengo una duda a que se refiere con linea_factura

dependiendo de la respuesta tendrias que cruzar vendedor,facturas,pueblo,provincia

o

vendedor,lineas_fac,facturas,pueblo,provincia


Exito en la resolucion, pregunta si no entiendes algo saludos
#24
COMO SOY TAN BUENA PERSONA XD les dire la solucion, la encontre por fin estuve 3 dias parado en una estupides, espero le sirva a alguien y no tenga que estar parado el tiempo que yo use o quizas mas ahi va el codigo corregido, para una sentencia dinamica


declaRE
VAR VARCHAR2(100);
ULT_SEQ NUMBER;

BEGIN
VAR:=
'SELECT GENERAL.GOREMAL_SURROGATE_ID_SEQUENCE.NEXTVAL FROM DUAL';
DBMS_OUTPUT.PUT_LINE(VAR);
EXECUTE IMMEDIATE VAR into ULT_SEQ;
DBMS_OUTPUT.PUT_LINE(ULT_SEQ);
END;


Saludos espero les sirva
#25
Buenos dias,
tengo una duda sobre la ejecucion de una sentencia mediante un execute immediate en oracle

adjunto codigo


declaRE
VAR VARCHAR2(100);
ULT_SEQ NUMBER;

BEGIN
VAR:=
'SELECT GENERAL.GOREMAL_SURROGATE_ID_SEQUENCE.NEXTVAL INTO ULT_SEQ FROM DUAL';
DBMS_OUTPUT.PUT_LINE(VAR);
--EXECUTE IMMEDIATE (VAR);
DBMS_OUTPUT.PUT_LINE(ULT_SEQ);
END;

ORA-00905: falta una palabra clave
ORA-06512: en línea 9


La sentencia contenida en el VAR si la ejecuto a mano no tiene problemas, el tema es que si la ejecuto con un execute immediate me da un error, indicado en el codigo, me imagino tendra algo que ver con que se genera el almacenamiento en la variable ULT_SEQ, alguna idea de como puedo lograr algo parecido a lo que deseo, ejecutar la sentencia select y almacenar el resultado en una variable?, esto se debe ejecutar necesariamente con un execute immediate ya que es una consulta dinamica, este bloque lo cree para simplificar la consulta, espero me puedan ayudar

Saludos
#26
Bases de Datos / ayuda con error de sintaxis
6 Abril 2016, 16:01 PM
Hola buenos dias, les agradeceria si me pueden ayudar estoy un poco colapsado y quizas no veo el error, espero me puedan ayudar


CREATE OR REPLACE PROCEDURE SP_SEQ_TEST
AS

NOM_SEQ  VARCHAR2(100);
ULT_SEQ  NUMBER;
VAL_SEQ  NUMBER;
NEXT_SEQ NUMBER;
VAR_EXEC VARCHAR2(200);


CURSOR C_SEQ IS
    SELECT seQuence_name, LAST_NUMBER   
      from all_sequenceS
     where sequence_name like '%SPRIDEN_SURROGATE%'
        or sequence_name like '%GTVZIPC_SURROGATE%'
        or sequence_name like '%STVCNTY_SURROGATE%'
        or sequence_name like '%SPRADDR_SURROGATE%'
        or sequence_name like '%SPRTELE_SURROGATE%'
        or sequence_name like '%SPBPERS_SURROGATE%'
        or sequence_name like '%GOREMAL_SURROGATE%'
        or sequence_name like '%SPREMRG_SURROGATE%'
        or sequence_name like '%GOBINTL_SURROGATE%'
        or sequence_name like '%SPRMEDI_SURROGATE%'
        or sequence_name like '%SPRHOLD_SURROGATE%'
        or sequence_name like '%SORFOLK_SURROGATE%'
        or sequence_name like '%SGBSTDN_SURROGATE%'
        or sequence_name like '%SGRSATT_SURROGATE%'
        or sequence_name like '%SGRSCMT_SURROGATE%'
        or sequence_name like '%SGRCHRT_SURROGATE%'
        or sequence_name like '%SIBINST_SURROGATE%'
        or sequence_name like '%SGRADVR_SURROGATE%'
        or sequence_name like '%SHRTTRM_SURROGATE%'
        or sequence_name like '%SHRTCKN_SURROGATE%'
        or sequence_name like '%SHRTCKG_SURROGATE%'
        or sequence_name like '%SHRTCKL_SURROGATE%'
        or sequence_name like '%SARADAP_SURROGATE%'
        or sequence_name like '%SARAPPD_SURROGATE%'
        or sequence_name like '%SORHSCH_SURROGATE%'
        or sequence_name like '%SYRCRMI_SURROGATE%'
        or sequence_name like '%TBRACCD_SURROGATE%'
        or sequence_name like '%STVSBGI_SURROGATE%'
        or sequence_name like '%SORBTAG_SURROGATE%'
        or sequence_name like '%SORBTAL_SURROGATE%'
        or sequence_name like '%SHRTGRD_SURROGATE%'
        or sequence_name like '%SHBTATC_SURROGATE%'
        or sequence_name like '%SHRTATC_SURROGATE%'
        or sequence_name like '%SORBDMO_SURROGATE%'
        or sequence_name like '%SOBSBGI_SURROGATE%'
        or sequence_name like '%STVBCHR_SURROGATE%'
        or sequence_name like '%SORBCHR_SURROGATE%'
        or sequence_name like '%SORBCMT_SURROGATE%'
        or sequence_name like '%SORTEST_SURROGATE%'
        or sequence_name like '%STVCIPC_SURROGATE%'
        or sequence_name like '%STVTESC_SURROGATE%'
        or sequence_name like '%STVTSRC_SURROGATE%'
        or sequence_name like '%SSBSECT_SURROGATE%'
        or sequence_name like '%SSRLINK_SURROGATE%'
        or sequence_name like '%SSBXLST_SURROGATE%'
        or sequence_name like '%SSRXLST_SURROGATE%'
        or sequence_name like '%SSRMEET_SURROGATE%'
        or sequence_name like '%SIRASGN_SURROGATE%'
        or sequence_name like '%SFBETRM_SURROGATE%'
        or sequence_name like '%SFRSTCR_SURROGATE%'
        or sequence_name like '%SGRSATT_SURROGATE%'
        or sequence_name like '%TBRMEMO_SURROGATE%'
        or sequence_name like '%SARCHKL_SURROGATE%'
        or sequence_name like '%SPRHOLD_SURROGATE%'
        or sequence_name like '%SGRSCMT_SURROGATE%'
        or sequence_name like '%SHRMRKS_SURROGATE%'
        or sequence_name like '%SHRMRKA_SURROGATE%'
        or sequence_name like '%SMBSLIB_SURROGATE%'
        or sequence_name like '%SMRSWAV_SURROGATE%'
        or sequence_name like '%SMRSWPV_SURROGATE%'
        or sequence_name like '%SHRDGMR_SURROGATE%'
       and sequence_owner ='SATURN';
       
       V_CUR C_SEQ%ROWTYPE;
BEGIN
       
      OPEN C_SEQ;
      LOOP
     
      FETCH C_SEQ INTO V_CUR;
      EXIT WHEN C_SEQ%NOTFOUND;
           
            VAR_EXEC:= 'SELECT SATURN.'||V_CUR.SEQUENCE_NAME||'.NEXTVAL INTO '||ULT_SEQ||' FROM DUAL';
            EXECUTE IMMEDIATE (VAR_EXEC) ; -- esta es la linea 87
           
            VAL_SEQ := V_CUR.LAST_NUMBER - ULT_SEQ;
           
            IF VAL_SEQ > 0 THEN
           
            VAR_EXEC :='ALTER SEQUENCE SATURN.'||V_CUR.SEQUENCE_NAME
            ||' INCREMENT BY '||VAL_SEQ;
           
            EXECUTE IMMEDIATE (VAR_EXEC);
           
            VAR_EXEC := 'SELECT SATURN.'||V_CUR.SEQUENCE_NAME||'.NEXTVAL FROM DUAL';
           
            EXECUTE IMMEDIATE (VAR_EXEC);
           
            VAR_EXEC :='ALTER SEQUENCE SATURN.'||V_CUR.SEQUENCE_NAME
            ||' INCREMENTE BY 1';
           
            EXECUTE IMMEDIATE (VAR_EXEC);
     
            END IF;
                 
      END LOOP;
      CLOSE C_SEQ; 
END; 


ORA-00936: falta una expresión
ORA-06512: en "BANINST1.SP_SEQ_TEST", línea 87
ORA-06512: en línea 1
   


tambien intente hacerlo con un cursor de manera distinta pero casualmente llegue al mismo error xD


declare

NOM_SEQ  VARCHAR2(100);
ULT_SEQ  NUMBER;
VAL_SEQ  NUMBER;
NEXT_SEQ NUMBER;

BEGIN

FOR CUR IN (
    SELECT seQuence_name, LAST_NUMBER   
      from all_sequenceS
     where sequence_name like '%SPRIDEN_SURROGATE%'
        or sequence_name like '%GTVZIPC_SURROGATE%'
        or sequence_name like '%STVCNTY_SURROGATE%'
        or sequence_name like '%SPRADDR_SURROGATE%'
        or sequence_name like '%SPRTELE_SURROGATE%'
        or sequence_name like '%SPBPERS_SURROGATE%'
        or sequence_name like '%GOREMAL_SURROGATE%'
        or sequence_name like '%SPREMRG_SURROGATE%'
        or sequence_name like '%GOBINTL_SURROGATE%'
        or sequence_name like '%SPRMEDI_SURROGATE%'
        or sequence_name like '%SPRHOLD_SURROGATE%'
        or sequence_name like '%SORFOLK_SURROGATE%'
        or sequence_name like '%SGBSTDN_SURROGATE%'
        or sequence_name like '%SGRSATT_SURROGATE%'
        or sequence_name like '%SGRSCMT_SURROGATE%'
        or sequence_name like '%SGRCHRT_SURROGATE%'
        or sequence_name like '%SIBINST_SURROGATE%'
        or sequence_name like '%SGRADVR_SURROGATE%'
        or sequence_name like '%SHRTTRM_SURROGATE%'
        or sequence_name like '%SHRTCKN_SURROGATE%'
        or sequence_name like '%SHRTCKG_SURROGATE%'
        or sequence_name like '%SHRTCKL_SURROGATE%'
        or sequence_name like '%SARADAP_SURROGATE%'
        or sequence_name like '%SARAPPD_SURROGATE%'
        or sequence_name like '%SORHSCH_SURROGATE%'
        or sequence_name like '%SYRCRMI_SURROGATE%'
        or sequence_name like '%TBRACCD_SURROGATE%'
        or sequence_name like '%STVSBGI_SURROGATE%'
        or sequence_name like '%SORBTAG_SURROGATE%'
        or sequence_name like '%SORBTAL_SURROGATE%'
        or sequence_name like '%SHRTGRD_SURROGATE%'
        or sequence_name like '%SHBTATC_SURROGATE%'
        or sequence_name like '%SHRTATC_SURROGATE%'
        or sequence_name like '%SORBDMO_SURROGATE%'
        or sequence_name like '%SOBSBGI_SURROGATE%'
        or sequence_name like '%STVBCHR_SURROGATE%'
        or sequence_name like '%SORBCHR_SURROGATE%'
        or sequence_name like '%SORBCMT_SURROGATE%'
        or sequence_name like '%SORTEST_SURROGATE%'
        or sequence_name like '%STVCIPC_SURROGATE%'
        or sequence_name like '%STVTESC_SURROGATE%'
        or sequence_name like '%STVTSRC_SURROGATE%'
        or sequence_name like '%SSBSECT_SURROGATE%'
        or sequence_name like '%SSRLINK_SURROGATE%'
        or sequence_name like '%SSBXLST_SURROGATE%'
        or sequence_name like '%SSRXLST_SURROGATE%'
        or sequence_name like '%SSRMEET_SURROGATE%'
        or sequence_name like '%SIRASGN_SURROGATE%'
        or sequence_name like '%SFBETRM_SURROGATE%'
        or sequence_name like '%SFRSTCR_SURROGATE%'
        or sequence_name like '%SGRSATT_SURROGATE%'
        or sequence_name like '%TBRMEMO_SURROGATE%'
        or sequence_name like '%SARCHKL_SURROGATE%'
        or sequence_name like '%SPRHOLD_SURROGATE%'
        or sequence_name like '%SGRSCMT_SURROGATE%'
        or sequence_name like '%SHRMRKS_SURROGATE%'
        or sequence_name like '%SHRMRKA_SURROGATE%'
        or sequence_name like '%SMBSLIB_SURROGATE%'
        or sequence_name like '%SMRSWAV_SURROGATE%'
        or sequence_name like '%SMRSWPV_SURROGATE%'
        or sequence_name like '%SHRDGMR_SURROGATE%'
       and sequence_owner ='SATURN'
       )
       
      LOOP -- esta es la linea 78
            EXECUTE IMMEDIATE 'SELECT SATURN.'||CUR.SEQUENCE_NAME||'.NEXTVAL INTO '||ULT_SEQ||' FROM DUAL';
            VAL_SEQ := CUR.LAST_NUMBER - ULT_SEQ;
           
            IF VAL_SEQ > 0 THEN
         
            EXECUTE IMMEDIATE 'ALTER SEQUENCE SATURN.'||CUR.SEQUENCE_NAME
            ||' INCREMENT BY '||VAL_SEQ;
           
            EXECUTE IMMEDIATE 'SELECT SATURN.'||CUR.SEQUENCE_NAME||'.NEXTVAL FROM DUAL';
           
            EXECUTE IMMEDIATE 'ALTER SEQUENCE SATURN.'||CUR.SEQUENCE_NAME
            ||' INCREMENTE BY 1';
     
            END IF;
           
      END LOOP;
       
END; 

ORA-00936: falta una expresión
ORA-06512: en línea 78


muchas gracias por su ayuda saludos
#27
Muchas gracias tambien ya me fije en eso, una duda, si es que quiero contar las celdas de un archivo, tengo que necesariamente abrir ese archivo ? o como (abriendolo me refiero con algun comando), saludo Gracias


EDITO
  Tengo la duda si es que puedo referenciar al archivo o necesariamente tengo que abrirlo?, ya que mi excel que contiene el macro tiene almacenadas las rutas de los distintos archivos,
Saludos y gracias nuevamente
#28
si eso estoy viendo, que se puede hacer, pero mi idea es contar muchos odf, o xls y pensaba en usar un bat que pudiera al menos escribir las ubicaciones de los archivos xls o odf en una celda de un xls para asi en este archivo crear el macro que cuente, mi idea es no tener que ingresar las direcciones a mano, ya que son demasiadas, alguien sabe si el bat puede escribir en una celda de un xls o odf??, muchas gracias :huh:
#29
Hola Buenos tardes,

una pregunta, es posible  contar las celdas de un excel siempre y cuanto no estén vacías?. e estado buscando info y solo me salen funciones de excel nada con el bat, quiero automatizar ese proceso y no me sale nada, o sera mejor automatizarlo con un macro?

Gracias por su tiempo Saludos
#30
Scripting / Re: duda con FOR
24 Febrero 2015, 16:45 PM
1. modificado el codigo a lo que deberia estar correcto como buena practica
Código (dos) [Seleccionar]
@echo off
echo    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo    º           SHAPES DE LOS ERRORES ENCONTRADOS              º
echo    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ


For /F "Tokens=* Delims=" %%a In ('""sqlplus.exe" -s QA_DATAC/qa_dc@orcl_qa @%sqlPath%t"')  do (set res=%%c
fme.exe "%PATH_FME%SHAPE_ERRORES.fmw" --COMUNA "%res%" --DestDataset_ORACLE8I_DB "ORCL_QA" --OUT_USER "QA_DATAC" --OUT_PASSWORD "qa_dc"
)

quedo en la misma face que el anterior, ejecuta todo sin problemas hasta que tiene que cerrarse el for de echo, si lo analizo bn esto queda pausado antes de llamar al programa FME.EXE

Cita de: Eleкtro en 24 Febrero 2015, 14:41 PM
2. Batch no puede "pedir el cierre de de un bloque de código abierto añadiendo el comando Exit", especifica claramente cual es el mensaje de error que se muestra en consola (aunque obviamente el mensaje sea un error de sintaxis).
R.- la consola no me muestra ni un error, la consola no se cierra, sigue ejecutando mi programa, si no escribo nada, queda eternamente ahi, el prompt puede escribir o saltar espacios, solo despues que escribo exit, sigue con la parte que falta del bat

Cita de: Eleкtro en 24 Febrero 2015, 14:41 PM
3. El bloque del FOR deberías tratar de cerrarlo usando los operadores de agrupación () más que nada para no caer en malas prácticas de programación que conllevan inevitablemente a posibles errores de ejecución (sobre todo de sintaxis, al concatenar comandos en un bloque abierto de FOR), cierra el bloque sí o sí.
R.- corregido en pto 1

Cita de: Eleкtro en 24 Febrero 2015, 14:41 PM
4. Ten en cuenta que, en caso de que la variable "%path_sql%" no contenga comillas dobles al principio y al final, y si además la ruta contuviese caracteres reservados por el sistema (ej: C:\Program Files (x86)\sql\ ) entonces ahí tienes el motivo del error, o mejor dicho del cierre inesperado de la consola, debido a un conflicto de sintaxis al intentar parsear los falsos operadores de agrupación por haber dejado la cadena de string abierta, para solucionarlo, encierra el string debidamente.
R.-no se cuales serian las palabras reservadas del sistema, para evitar esto en la declaracion le coloco las "" o al momento de usar esta variable la uso con "" ?... de todas maneras la ruta que tienen todas las path_XX es \\111.111.11.111\qa_datac\ENTRADA\

si esta variable tiene que ser usada con "", como se esta usando en el mismo ejemplo, deberia tener comillas por si sola? me explico
Código (dos) [Seleccionar]
DEL ""%PATH_SQL%"ESTADISTICA.SQL"--¿?

Cita de: Eleкtro en 24 Febrero 2015, 14:41 PM
5. Aplica también las mismas reglas de cierre de string a esta instrucción (repito, en caso de que no estén cerrados, porque por lo que muestras no lo puedo saber:
Por norma general las rutas con espacios en el nombre deben encerrarse usando comillas dobles para poder pasarlo como argumento, ya que cada argumento está delimitado por un espacio y por ende una ruta abierta y con espacios será una ruta dividida en varios argumentos para la aplicación, la ruta completa será irreconocible debido a que el recuento de parámetros será incorrecto.

Lo mismo se aplica a cualquier valor de string que quieras pasarle a un parámetro (tenga o no espacios, es lo correcto):
fme.exe "%path_fme%errores_archivos.fmw" --comuna "%res%" --destdataset_oracle8i_db "orcl_qa" --out_user "qa_datac" --out_password "qa_dc"
R.- Modificado tambien en Pto 1



PERDÓN PERDÓN  :-[ :-[ :-[ :-[ ;D ;D ... EL ERROR NO ESTA EN EL FOR, me dedique a verificar si estaba bn, porque al hacer las modificaciones que me indicasteme di cuenta que tambien funcionaba la llamada al programa FME, le puse pauses por doquier xD, hasta que di con el error, no se si es que me puedes ayudar porque es una mezcla entre Sql y el Bat tengo un codigo gigante, solo te mostrare el error para no marear
Código (dos) [Seleccionar]
DEL "%PATH_SQL%ESTADISTICA.SQL"
ECHO EXEC SP_VALIDACION_GEOMETRIAS;>>"%PATH_SQL%ESTADISTICA.SQL"
ECHO EXIT>>"%PATH_SQL%ESTADISTICA.SQL"
sqlplus %conexion% @%PATH_SQL%ESTADISTICA.SQL

sqlplus %conexion% @%PATH_SQL%COUNT.SQL rem <-- el desgraciado esta aca
CALL "%PATH_SCRIPT%VAR_ERRORES.BAT" rem --> aqui pense que estaba el error


eso que vez, es una llamada una query de oracle, conexion tiene la contraseña/user/service @bla...bla es la llamada a count que es un archivo almacenado en la ruta que esta en Path_SQL, el archivo tiene esccrito esto
Código (sql) [Seleccionar]
select count(*) from errores_geom; -- en oracle las sentencias se terminan con un ;
/* en la segunda linea dice */ exit -- sin ;
el exit es para que pueda salir de la llamada desde el bath, pero no la esta tomando, aqui es donde te pido ayuda a ti, se supone que escribiendole al archivo exit sale de la query, pero no lo hace, me hecharias una mano? que puede ser?
Saludos y perdon por la equivocacion de antes... aaa de todas maneras me puedes responder lo que esta en Rojo en el punto 4, para saber para una, siguiente vez

Saludos y gracias por tu ayuda y sorry por la mezcla de etiquetas, intente dejarlo ordenado pero parece que no me funciono xD...Ahi si, tenia una etiqueta de citar de mas