sql >> Databáze >  >> RDS >> Sqlserver

MSSQL2008 - Pyodbc - Předchozí SQL nebyl dotaz

Jen pro případ, že by nějaký osamělý síťový nomád narazil na tento problém, řešení od Torxed mi nefungovalo. Mně se ale osvědčilo následující.

Volal jsem SP, který vloží nějaké hodnoty do tabulky a pak vrátí některá data zpět. Stačí do SP přidat následující:

SET NOCOUNT ON

Bude to fungovat dobře :)

Kód Pythonu:

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

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

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


  1. Deklarujte proměnnou typu řádku v PL/pgSQL

  2. Jak můžete pojmenovat tabulky datové sady, které vracíte v uloženém procesu?

  3. Aktualizujte více sloupců pro více řádků v jednom dotazu SQL

  4. 7 klíčových věcí k zapamatování o globalizaci datových modelů