SQL Server INSERT INTO使用EXECUTE

时间:2015-10-09 11:27:08

标签: sql-server database sql-server-2012 insert-into

我正在尝试使用EXECUTE语句将一些值插入表中。

我找到了一些例子,然而,那些没有回答我的问题。

注意:以下给出的来源是该程序的代码。声明并初始化了所有提到的变量。

我尝试的第一种方式:

enter image description here

结果:

  

错误:过程或函数指定了太多参数。

我完全理解为什么我会这样做。因为sp_executesql不允许有超过4个参数,并且无法识别哪个参数在哪里。

第二次尝试(我只希望使用execute语句将输出输入到变量中,然后将其放入表中):

enter image description here

我得到了:

  

必须声明标量变量“@crlf”

实际上这个变量是在这个程序的顶部声明的,但是对于我来说这个变量并不清楚,为什么它仍然会抱怨......

将执行语句和数字(附加值)放入表格的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

作为唯一的解决方法,我可以建议使用临时表。应该很简单:

SELECT TOP (0) column1
INTO #TemporaryResults
FROM [master].[dbo].[table_1];

INSERT INTO #TemporaryResults
EXECUTE sp_executesql @sql, N'@object_id INT, @crlf CHAR(2)', @object_id, @crlf;

INSERT INTO [master].[dbo].[table_1] (column1, column2)
SELECT column1, 1
FROM #TemporaryResults;
  1. 从[table_1] column1
  2. 创建column1的副本
  3. 将SP生成的记录插入其中
  4. 将记录插入实际表格

答案 1 :(得分:0)

请按照以下示例尝试

$string = '%u05E1%u05E2';
$string = preg_replace('/%u([0-9A-F]+)/', '&#x$1;', $string);
echo html_entity_decode($string, ENT_COMPAT, 'UTF-8');

观察

  1. SQL查询需要参数DECLARE @IntVariable int; DECLARE @SQLString nvarchar(500); DECLARE @ParmDefinition nvarchar(500); DECLARE @max_title varchar(30); SET @IntVariable = 197; SET @SQLString = N'SELECT @max_titleOUT = max(JobTitle) FROM AdventureWorks2012.HumanResources.Employee WHERE BusinessEntityID = @level'; SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT'; EXECUTE sp_executesql @SQLString, @ParmDefinition, @level = @IntVariable, @max_titleOUT=@max_title OUTPUT; SELECT @max_title; ,这就是我们将其声明为参数的原因

  2. SQL查询再次返回@max_titleOUT的输出。所以我们也将它声明为参数。所以最后的参数列表是

    @level
  3. 现在我们必须将SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT'; 值发送到动态查询,这就是我们使用@level@level = @IntVariable值发送到@IntVariable

    <的原因/ LI>
  4. 最后,@level我们会将@max_titleOUT = @max_title OUTPUT保存的动态查询输出复制到@max_titleOUT