Stack Overflow en español Asked by luis on August 26, 2021
estoy creando un stored donde, si el pacienteId es mayor a 0 (para que lo modifique en un pacienteId existente) modifique su domicilio (update)…
alter PROCEDURE [dbo].[sp_tweb_cambio_direccion_api]
@pacienteId numeric,
@calle varchar(30),
@altura varchar(10),
@piso varchar(10),
@departamento varchar(4)
AS
select COD_PACIENTE as pacienteId from TWEB_MM_LISTA_GENERAL where COD_TWEB = 31852
If @pacienteId > 0
select *
from MM_PACIENTE where COD_PACIENTE = 13391
UPDATE MM_PACIENTE
SET DOM_CALLE = '85',
DOM_NRO= '139',
DOM_PISO = '8',
DOM_DPTO = 'B'
WHERE COD_PACIENTE = 13391
--sp_tweb_cambio_direccion_api 31852
Al stored lo llamo: sp_tweb_cambio_direccion_api
pero el error es el siguiente:
El procedimiento o la función ‘sp_tweb_cambio_direccion_api’ esperaba el parámetro ‘@calle’, que no se ha especificado.
Por lo que lei es algo sencillo de arreglar pero no veo como.
Desde ya mil gracias a todos!
PD: (intente colocar el stored en modo codigo para que se vea mejor y no pude).
Edito: entiendo que no loe paso los 4 parametros restantes (piso, calle, depto y numero), lo que no enteindo es donde colocarlo para que asi funcione.
Apartando el hecho de que el Stored Procedure actualizará al mismo paciente siempre, lo cual no produce resultados significativos, la respuesta concreta a tu pregunta es que el error ocurre porque no estás pasando valores a todos los parámetros.
Ten en cuenta que para poder ejecutar un Stored Procedure que requiere un conjunto de parámetros que no son opcionales, debes incluir un valor para cada parámetro.
Utiliza el siguiente ejemplo para ejecutarlo desde SQL
EXEC [dbo].[sp_tweb_cambio_direccion_api]
@pacienteId = 1,
@calle = '85',
@altura = 'ALT',
@piso = '8',
@departamento = 'B'
Ten en cuenta que aunque esto ejecuta el SP sin errores, los valores que pasas a cada parámetro no son utilizados.
Por favor incluye más detalles con ejemplos de uso y resultados esperados si quieres sugerencias para mejorar el SP en si.
Answered by Pablo Gutiérrez on August 26, 2021
No compares directamente a una consulta a la que le has puesto un alias:
Es vez de poner:
select COD_PACIENTE as pacienteId from TWEB_MM_LISTA_GENERAL where COD_TWEB = 31852
usar :
set @pacienteId = (select COD_PACIENTE from TWEB_MM_LISTA_GENERAL where COD_TWEB = 31852)
Si no necesitas pasar mas que el Id como parámetro a tu store puedes declararlos usando la palabra reservada del sql 'declare' (justo como lo tienes cuando configurar tu store)
Answered by Berlín on August 26, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP