Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将变量设置为存储过程中已执行语句的结果_Sql_Sql Server 2008_Dynamic Sql - Fatal编程技术网

Sql 将变量设置为存储过程中已执行语句的结果

Sql 将变量设置为存储过程中已执行语句的结果,sql,sql-server-2008,dynamic-sql,Sql,Sql Server 2008,Dynamic Sql,你有关于变量语法的简明教程吗?这是存储过程的一部分: Set @sql = 'Set ' + @calc + '= SUM(datalength(' + @column_name + '))/2 from ' + @table_name exec (@sql) 它不起作用-我在将数据类型varchar转换为numeric时遇到一个错误。下面是一个模拟示例: DECLARE @calc numeric(18,2) DECLARE @sql nvarchar(1500), @column_nam

你有关于变量语法的简明教程吗?这是存储过程的一部分:

Set @sql = 'Set ' + @calc + '= SUM(datalength(' + @column_name + '))/2 from ' + @table_name 
exec (@sql)
它不起作用-我在将数据类型varchar转换为numeric时遇到一个
错误。
下面是一个模拟示例:

DECLARE @calc numeric(18,2)
DECLARE @sql nvarchar(1500), @column_name nvarchar(50), @table_name nvarchar(50)
Set @column_name = 'EID'
Set @table_name = 'CTY_SUPPORTED'
Set @sql = 'Select @calc = SUM(datalength(' + @column_name + '))/2 from ' + @table_name
exec (@sql)
print @calc
我感兴趣的是将以下值赋给变量@calc:
SUM(datalength(column_x))/2 from table_x


如果你知道语法课(最好不是百科全书)——非常感谢,再见

谢谢,但是它说:
在'EID'附近的语法不正确
必须声明标量变量“@calc”。
(你可以看到我编辑的问题)你
必须声明标量变量“@calc”。
?不确定你的意思,我在第一行声明:声明@calc numeric(18,2)啊,我的错误,你需要执行包含参数的动态sql。感谢flem,了解sp_executesql非常有用!
Set @sql = 'Select @calc = SUM(datalength(' + @column_name + '))/2 from ' + @table_name 
exec (@sql)