entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Problema con Stored Procedure

Hola a todos, tengo el siguiente stored procedure en SQL Server


ALTER PROCEDURE [dbo].[user] @type int, @owner1 varchar(70), @owner2 varchar(50), @idmop varchar (max)
AS

IF @type = 2/*this is for DATA*/
        BEGIN   
            UPDATE [MOPS].[dbo].[create_mop_Contacts] set [signum]=@owner2 where [signum]=@owner1 and [idmop]in(@idmop)

        END

exec [MOPS].[dbo].[user]  '2', 'eartmej','eracpac','1','2'

el problema es que la forma en que paso la variable @idmop es como si mandara dos parametros y no uno y no funciona mi stored procedure,
alguien que me pueda orientar? desde ya muchas gracias

0voto

Peter comentado

¿No te ayudó la respuesta de Carlos?

0voto

rach comentado

lo hice de diferente manera, puse lo siguiente para que me recibiera bien mi parametro

begin
    DECLARE @start INT, @end INT 

    SELECT @start = 1, @end = CHARINDEX(',', @idmop) 
    WHILE @start < LEN(@idmop) + 1 
    BEGIN 
        IF @end = 0  
            SET @end = LEN(@idmop) + 1

        INSERT INTO #allmops ([mop])  
        VALUES(SUBSTRING(@idmop, @start, @end - @start)) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(',', @idmop, @start)
    END

2 Respuestas

1voto

rach Puntos6010

begin
DECLARE @start INT, @end INT

SELECT @start = 1, @end = CHARINDEX(',', @idmop) 
WHILE @start < LEN(@idmop) + 1 
BEGIN 
    IF @end = 0  
        SET @end = LEN(@idmop) + 1

    INSERT INTO #allmops ([mop])  
    VALUES(SUBSTRING(@idmop, @start, @end - @start)) 
    SET @start = @end + 1 
    SET @end = CHARINDEX(',', @idmop, @start)
END

0voto

Peter comentado

Gracias por compartir la solución!

3votos

carlossevi Puntos63580

No cuadra porque estás definiendo 4 parámetros pero en la llamada estás pasando 5 parámetros ¿Los dos últimos deberían ser una única cadena de texto?

Entonces la solución es:

exec [MOPS].[dbo].[user]  2, 'eartmej','eracpac', '''1'',''2''';

En MS SQL Server la comilla simple ' se escapa poniendo una doble comilla simple.

Puedes hacer la siguiente prueba para comprobarlo:

PRINT '''1'',''2''';

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta