¿Cómo ejecutar el procedimiento almacenado de SQL Server en SQL Developer?


148

Me dieron una cuenta de usuario en una base de datos de SQL Server que solo tiene privilegios para ejecutar un procedimiento almacenado. Agregué el archivo jar JDBC SQL Server JDBC a SQL Developer y lo agregué como un controlador JDBC de terceros. Puedo iniciar sesión con éxito en la base de datos de SQL Server. Me dieron esta sintaxis para ejecutar el procedimiento:

EXEC proc_name 'paramValue1' 'paramValue2'

Cuando ejecuto esto como una declaración o un script, obtengo este error:

Error starting at line 1 in command:
EXEC proc_name 'paramValue1' 'paramValue2'
Error report:
Incorrect syntax near the keyword 'BEGIN'.

Intenté envolver la declaración BEGIN/END, pero recibí el mismo error. ¿Es posible llamar al procedimiento desde SQL Developer? Si es así, ¿qué sintaxis necesito usar?

Respuestas:


231

No necesita la cláusula EXEC. Simplemente use

proc_name paramValue1, paramValue2

(y necesitas comas como mencionó Misnomer)


8
¿Hay alguna excepción a esta regla? Parece que recibo el error "Sintaxis incorrecta cerca de 'sp_dev_mystoredproc'". al ejecutar con esta sintaxis.
nuzzolilo

2
En mi caso
César León

3
Recomiendo visitar el enlace sugerido por @MuriloKunze. Muy importante saberlo.
RBT

@RBT ¿Quién es el enlace de dónde?
CervEd

72

Estás perdido ,

EXEC proc_name 'paramValue1','paramValue2'

1
Agregué la coma que falta, pero nuevamente, sigo teniendo el mismo error.
sdoca

¿Cuáles son sus parámetros si son varchar, entonces solo necesita las comillas ... aparte de eso, no se le ocurre nada ... podría probar esto solo ejecute esto en una nueva ventana EXEC proc_namey vea si le pide el segundo parámetro ... entonces por lo menos usted sabe que su sytax es right..if medios no funciona le probanly no tengo derecho almacenada nombre proc ... prueba completa nombre calificado ..
Vishal

Eliminé el segundo parámetro y aún el mismo error. No creo que esté ejecutando el procedimiento en absoluto. El comando EXEC no está resaltado en la sintaxis, por lo que supongo que Developer no lo reconoce a pesar de que la conexión es a una base de datos de SQL Server. Pero no puedo encontrar nada en la web para confirmar / negar eso.
sdoca

Sí ... intente seleccionar algunos registros y ejecutar algunos comandos simples para ver si algo funciona ... la mejor de las suertes ...
Vishal

Desafortunadamente, mi usuario solo tiene privilegios para ejecutar el procedimiento almacenado.
sdoca

19

Usted necesita hacer ésto:

    exec procName 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'

4
    EXECUTE [or EXEC] procedure_name
  @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'

0
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

Si el objetivo del Procedimiento almacenado es realizar un INSERTen una tabla que tiene un campo de Identidad declarado, entonces el campo, en este escenario @paramValue1, debe declararse y simplemente pasar el valor 0, ya que se incrementará automáticamente.


0

Sé que este es el viejo. Pero esto puede ayudar a otros.

He agregado la función de llamada SP entre BEGIN / END. Aquí hay un guión de trabajo.

ALTER Proc [dbo].[DepartmentAddOrEdit]
@Id int,
@Code varchar(100),
@Name varchar(100),
@IsActive bit ,
@LocationId int,
@CreatedBy int,
@UpdatedBy int
AS
    IF(@Id = 0)

    BEGIN
    INSERT INTO Department (Code,Name,IsActive,LocationId,CreatedBy,UpdatedBy,CreatedAt)
        VALUES(@Code,@Name,@IsActive,@LocationId,@CreatedBy,@UpdatedBy,CURRENT_TIMESTAMP)

    EXEC dbo.LogAdd @CreatedBy,'DEPARTMENT',@Name
    END

    ELSE

    UPDATE Department SET
        Code = @Code,
        Name = @Name,
        IsActive = @IsActive,
        LocationId = @LocationId,
        CreatedBy = @CreatedBy,
        UpdatedBy = @UpdatedBy,
        UpdatedAt =  CURRENT_TIMESTAMP 
    where Id = @Id 

-3

Si simplemente necesita ejecutar su procedimiento almacenado proc_name 'paramValue1' , 'paramValue2'... al mismo tiempo que está ejecutando más de una consulta, como una consulta de selección y un procedimiento almacenado, debe agregar select * from tableName EXEC proc_name paramValue1 , paramValue2...


-8

Los procedimientos almacenados se pueden ejecutar en la herramienta de desarrollo SQL usando la sintaxis siguiente

COMIENZA el nombre del procedimiento (); FINAL;

Si hay algún parámetro, debe pasarlo.


¿Por qué encierra una sola declaración por un bloque de declaración? Debe hacerlo solo para una serie de sentencias T-SQL .
David Ferenczy Rogožan

-11
Select * from Table name ..i.e(are you save table name in sql(TEST) k.

Select * from TEST then you will execute your project.

1
Bienvenido a stackoverflow. Haga este recorrido para conocer cómo funciona este sitio y para qué sirve. ¿Cual es tu respuesta?
Devraj Gadhavi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.