Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

MSSQL2008 - Pyodbc - Le SQL précédent n'était pas une requête

Juste au cas où un nomade du net solitaire rencontrerait ce problème, la solution de Torxed n'a pas fonctionné pour moi. Mais ce qui suit a fonctionné pour moi.

J'appelais un SP qui insère des valeurs dans une table, puis renvoie des données. Ajoutez simplement ce qui suit au SP :

SET NOCOUNT ON

Cela fonctionnera très bien :)

Le code Python :

    query = "exec dbo.get_process_id " + str(provider_id) + ", 0"
    cursor.execute(query)

    row = cursor.fetchone()
    process_id = row[0]

Le SP :

USE [DBNAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GET_PROCESS_ID](
    @PROVIDER_ID INT,
    @PROCESS_ID INT OUTPUT
)
AS
BEGIN
    SET NOCOUNT ON
    INSERT INTO processes(provider_id) values(@PROVIDER_ID)
    SET @PROCESS_ID= SCOPE_IDENTITY()
    SELECT @PROCESS_ID AS PROCESS_ID
END