Problème: Comment pouvez-vous remplir une table temporaire avec les résultats d'une procédure stockée sans définir explicitement le schéma de table au préalable?
Solution: Tirez parti de la fonction OPENROWSET
. Cette fonction exécute une requête distante et insère directement les résultats dans une table temporaire, en déduisant dynamiquement la structure du tableau à partir de la sortie de la requête.
Voici un exemple:
<code class="language-sql">-- Sample Stored Procedure CREATE PROC getBusinessLineHistory AS BEGIN SELECT * FROM sys.databases END GO -- Enable Ad Hoc Distributed Queries (required for OPENROWSET) sp_configure 'Show Advanced Options', 1 GO RECONFIGURE GO sp_configure 'Ad Hoc Distributed Queries', 1 GO RECONFIGURE GO -- Insert results into temporary table using OPENROWSET SELECT * INTO #MyTempTable FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2008;Trusted_Connection=yes;', 'EXEC getBusinessLineHistory') -- Verify the data SELECT * FROM #MyTempTable</code>
Ce code définit d'abord un exemple de procédure stockée (getBusinessLineHistory
). Surtout, il permet ensuite aux "requêtes distribuées ad hoc" en utilisant sp_configure
. Ceci est une condition préalable à l'utilisation OPENROWSET
.
OPENROWSET
exécute la procédure stockée à distance et les données renvoyées sont automatiquement insérées dans #MyTempTable
. La structure de la table temporaire est créée dynamiquement en fonction des types de données renvoyés par la procédure stockée. Enfin, une instruction SELECT
confirme l'insertion réussie des données. Cette approche évite la nécessité de définir manuellement le schéma de la table temporaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!