8
votes

Les requêtes hétérogènes nécessitent la définition des options ANSI_NULLS et ANSI_WARNINGS pour la connexion. Cela garantit une sémantique de requête cohérente

J'ai vérifié sur toute la bande et je n'ai pas trouvé de solution qui semble fonctionner pour moi ..

J'ai recréé ma procédure stockée, en veillant à avoir ces lignes comme premières lignes: < Pré> xxx

Je reçois seulement cette erreur lorsque j'appelle ma procédure stockée à partir de PHP. Cela fonctionne bien dans SQL Server .. Je ne sais vraiment pas ce que je peux faire d'autre. Veuillez m'aider; _;


2 commentaires

La clé que vous semble manquante: pour la connexion . Vous définissez des options pour le processus, pas la connexion .


Je ne peux donc pas faire une réponse formelle: @andre Barber: Vous aviez raison, l'ajouter à la procédure stockée n'a pas fonctionné. Voici ce qui était nécessaire pour faire: dans le PHP: $ SQL = "EXEC MY_STORE_PROCEDURE"; $ résultat = mssql_query ("SET ANSI_NULLS ON") ou DIE (MSSQL_GET_LAST_MESSAGE ()); $ résultat = MSSQL_Query ("SET ANSI_WARNINGS ON") ou DIE (MSSQL_GET_LAST_MESSAGE ()); $ résultat = MSSQL_Query ($ SQL);


3 Réponses :


3
votes

Ceci est un exemple qui fonctionne ... Essayez-le comme ceci xxx


0 commentaires

9
votes

a ajouté ceci avant votre déclaration plutôt qu'au début de la requête principale xxx


0 commentaires

1
votes

Ce n'est pas souvent une meilleure réponse est sur un autre forum - mais selon Ce message , les commandes Set CODE> doivent être avant la procédure Créer code >. Testé et fonctionne avec SQL Server 2017.

Par exemple: P>

SET ANSI_WARNINGS ON
SET ANSI_NULLS ON 
GO

CREATE PROCEDURE dbo.access_update 
    @O_SQL_Error_State int = NULL OUTPUT
AS
    ...


1 commentaires

Cela a fonctionné pour moi, mais vous devez mettre aller après chaque ligne ou que vous obtenez «Créer / Alter Procédure» doit être la première instruction dans un lot de requête. Merci!