Sql updating table variable
The WHERE clause specifies which record(s) that should be updated.
Is a special data type that can be used to store a result set for processing at a later time.
table variables are not supported in the SQL Server optimizer's cost-based reasoning model.
Therefore, they should not be used when cost-based choices are required to achieve an efficient query plan.
In some cases, performance may improve by using temporary tables instead, which support indexes and statistics.
For more information about temporary tables, see CREATE TABLE (Transact-SQL).
Therefore, in many cases, the optimizer will build a query plan on the assumption that the table variable has no rows.
For this reason, you should be cautious about using a table variable if you expect a larger number of rows (greater than 100). Alternatively, for queries that join the table variable with other tables, use the RECOMPILE hint, which will cause the optimizer to use the correct cardinality for the table variable.
So i tried declaring @OLD_NAV_VALUE inside the EXEC statement.
But if i do this i am not able to use the same outside the EXEC statement. declare @field nvarchar(50); set @field = N'Field To Select'; declare @sql nvarchar(3000); declare @parm Definition nvarchar(500); SET @parm Definition = N'@return Value OUT nvarchar(50) OUTPUT'; set @sql = N'SELECT @Return Value OUT = ' @Field ' FROM [Table Name] WHERE [Some Condition]' declare @return Value nvarchar(50); EXECUTE sp_executesql @sql, @parm Definition, @return Value Out = @return Value OUTPUT; SELECT @return Value First, I'd suggest that you do a Google on "Erland dynamic SQL" and read his white paper on the subject.
Your design is probably not the best if it requires that you use a dynamic column name like this.
For more information about the syntax, see CREATE TABLE (Transact-SQL), CREATE FUNCTION (Transact-SQL), and DECLARE @local_variable (Transact-SQL).
is not specified, the column inherits the collation of the current database.