Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

crear procedimiento de almacenado

Estas en el tema de crear procedimiento de almacenado en el foro de SQL Server en Foros del Web. hola, soy nueva en el tema de los procedimientos de almacenado, y debo pasar una aplicacion de vb a uno de ellos, podrian ayudarme....este es ...
  #1 (permalink)  
Antiguo 09/02/2015, 06:46
 
Fecha de Ingreso: febrero-2015
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
crear procedimiento de almacenado

hola, soy nueva en el tema de los procedimientos de almacenado, y debo pasar una aplicacion de vb a uno de ellos, podrian ayudarme....este es el codigo de vb
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las reglas del foro, por favor.
gracias
  #2 (permalink)  
Antiguo 09/02/2015, 06:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: crear procedimiento de almacenado

Estimado:
La construcción de stored procedures depende de qué DBMS estés usando, ya que no existe una sintaxis estandarizada, y por consecuencia la misma tarea, en diferentes DBMS, tiene codigos de lenguaje procedural completamente diferente e incompatible. No se peude pasar de uno a otro sin acudir al manual de referencia de cada uno.

En cuanto al código, si lees el link correspondiente, cerás que no se permite codigo de programacion en los foros de BBDD: No aporta, confunde y no resulta relevante en la mayor parte de las situaciones.
Para crear un SP lo que debes tener claro es qué es lo que debes hacer en la base, y no lo que hayas hehco en la aplicación, ya que no se realizan las cosas de la misma forma.
Programar en lenguajes de programación no es programar SQL.

Necesitamos saber al menos tres cosas:
1) QUé DBMS usas.
2) QUé tarea (descripcion paso a paso) debe hacerse en el SP.
3) Qué estructura tienen las tablas que intervienen.

Con eso podemos avanzar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/02/2015, 07:06
 
Fecha de Ingreso: febrero-2015
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: crear procedimiento de almacenado

uso sql server 2008

y debo sacar de una tabla todos los codigos de cliente que sean diferentes para lo cual utilizo la siguiente sentencia
Código SQL:
Ver original
  1. SELECT DISTINCT  MICOD FROM S_01_OM01_SEG_VTA_APEX_ACUM WHERE ANNO='2015'
,
una vez extraidos esos codigos debo ir preguntando uno por uno para poder sacar sus ultimos 4 motivos de llamado (es para un callcenter), uso la siguiente sentencia para ello..
Código SQL:
Ver original
  1. SELECT top 4 MOTIVO FROM S_01_OM01_SEG_VTA_APEX_ACUM
  2. WHERE ANNO='2015' AND MICOD='" & micod & "'
  3. ORDER BY CONVERT(FLOAT,MES) DESC, CONVERT(FLOAT,DIA) DESC

en donde micod es el codigo del cliente que saco uno a uno acorde a la consulta anterior....

despues de eso debo guardar todo (micod, motivo1, motivo2, motivo3, motivo4) en una tabla auxiliar.

Última edición por gnzsoloyo; 09/02/2015 a las 10:10
  #4 (permalink)  
Antiguo 09/02/2015, 10:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: crear procedimiento de almacenado

vamos a ver:

Obtienes los distintos codigos del 2015 verdad?? bueno y si esos los guardamos en una tabla temporal podriamos tener algo como esto:

Código SQL:
Ver original
  1. SELECT DISTINCT MICOD INTO #temp FROM S_01_OM01_SEG_VTA_APEX_ACUM WHERE ANNO='2015',

y para tu sengudo query:

Código SQL:
Ver original
  1. SELECT * FROM (
  2. SELECT MOTIVO, ROW_NUMBER() OVER(partition motivo ORDER BY mes) AS rn FROM S_01_OM01_SEG_VTA_APEX_ACUM WHERE ANNO='2015' AND MICOD IN (SELECT micod FROM #temp)
  3. ORDER BY CONVERT(FLOAT,MES) DESC, CONVERT(FLOAT,DIA) DESC
  4. ) AS t1 WHERE rn<=4
con eso :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 09/02/2015 a las 12:33
  #5 (permalink)  
Antiguo 09/02/2015, 12:21
 
Fecha de Ingreso: febrero-2015
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: crear procedimiento de almacenado

tu consulta me da error..... en la sintaxis del row_number over
  #6 (permalink)  
Antiguo 09/02/2015, 12:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: crear procedimiento de almacenado

se me fue un parentesis:

Código SQL:
Ver original
  1. SELECT * FROM (
  2. SELECT MOTIVO, ROW_NUMBER() OVER(partition motivo ORDER BY mes) AS rn FROM S_01_OM01_SEG_VTA_APEX_ACUM WHERE ANNO='2015' AND MICOD IN (SELECT micod FROM #temp)
  3. ORDER BY CONVERT(FLOAT,MES) DESC, CONVERT(FLOAT,DIA) DESC
  4. ) AS t1 WHERE rn<=4

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 10/02/2015, 06:11
 
Fecha de Ingreso: febrero-2015
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: crear procedimiento de almacenado

mmmmm no creo que no funciona, me lanza error al ejecutar el procedimiento, dice "the order by clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless top of for xml is also specified"

no se si estare haciendo algo mal, pero seria de mucha ayuda si me escribieran el procedimiento de almacenado completo

gracias

Última edición por pekas93; 10/02/2015 a las 06:25
  #8 (permalink)  
Antiguo 10/02/2015, 08:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: crear procedimiento de almacenado

madre de dios demasiados errores estoy cometiendo(eso de no tener los datos no ayuda mucho)

Código SQL:
Ver original
  1. SELECT DISTINCT MICOD INTO #temp FROM S_01_OM01_SEG_VTA_APEX_ACUM WHERE ANNO='2015',
  2.  
  3. SELECT * FROM (
  4. SELECT MOTIVO, ROW_NUMBER() OVER(partition motivo ORDER BY mes) AS rn FROM S_01_OM01_SEG_VTA_APEX_ACUM WHERE ANNO='2015' AND MICOD IN (SELECT micod FROM #temp)
  5. ) AS t1 WHERE rn<=4
  6. ORDER BY CONVERT(FLOAT,MES) DESC, CONVERT(FLOAT,DIA) DESC

Aclarando esto no es el procedure, es nada mas los pasos que mencionabas, y los puse para que verifiques que el proceso funcion, una vez que tengas eso podemos hacer el procedure :)


P.D: Recuerda hay que ejecutar las 2 partes del codigo ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: almacenado, bases-de-datos-general, procedimiento, registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:50.