Quel est l'équivalent SQL Server des variables de binding Oracle en SQL dynamic?

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:

http://msdn.microsoft.com/en-us/library/ms188001.aspx

http://msdn.microsoft.com/en-us/library/ms175170.aspx

sp_executeSQL est probablement le plus proche, il y a aussi exec() , aussi mustread: The Curse et les bénédictions du SQL dynamic .