Dans Oracle, lors de l'écriture de SQL dynamic, on fait quelque chose comme ceci:
create or replace procedure myProc(n in number) as begin execute immediate 'update myTable set myColumn = :n' using n; commit; end;
Et puis "la magie arrive". Quel est, le cas échéant, le concept / syntaxe équivalent dans SQL Server? (BTW j'utilise SQL Server 2005)
Vous utiliseriez sp_executesql
. Les variables liées ressemblent à ceci: @var1
.
À partir du lien ci-dessous, un exemple de requête par rapport à la database Northwind standard:
DECLARE @IntVariable int; DECLARE @SQLSsortingng nvarchar(500); DECLARE @ParmDefinition nvarchar(500); /* Build the SQL ssortingng one time.*/ SET @SQLSsortingng = N'SELECT BusinessEntityID, NationalIDNumber, JobTitle, LoginID FROM AdventureWorks2008R2.HumanResources.Employee WHERE BusinessEntityID = @BusinessEntityID'; SET @ParmDefinition = N'@BusinessEntityID tinyint'; /* Execute the ssortingng with the first parameter value. */ SET @IntVariable = 197; EXECUTE sp_executesql @SQLSsortingng, @ParmDefinition, @BusinessEntityID = @IntVariable; /* Execute the same ssortingng with the second parameter value. */ SET @IntVariable = 109; EXECUTE sp_executesql @SQLSsortingng, @ParmDefinition, @BusinessEntityID = @IntVariable;
Les détails complets et l'exemple de syntaxe sont aux liens suivants:
sp_executeSQL
est probablement le plus proche, il y a aussi exec()
, aussi mustread: The Curse et les bénédictions du SQL dynamic .