我正在尝试使用EXECUTE
语句将一些值插入表中。
我找到了一些例子,然而,那些没有回答我的问题。
注意:以下给出的来源是该程序的代码。声明并初始化了所有提到的变量。
我尝试的第一种方式:
结果:
错误:过程或函数指定了太多参数。
我完全理解为什么我会这样做。因为sp_executesql
不允许有超过4个参数,并且无法识别哪个参数在哪里。
第二次尝试(我只希望使用execute语句将输出输入到变量中,然后将其放入表中):
我得到了:
必须声明标量变量“@crlf”
实际上这个变量是在这个程序的顶部声明的,但是对于我来说这个变量并不清楚,为什么它仍然会抱怨......
将执行语句和数字(附加值)放入表格的最佳方法是什么?
答案 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 :(得分:0)
请按照以下示例尝试
$string = '%u05E1%u05E2';
$string = preg_replace('/%u([0-9A-F]+)/', '&#x$1;', $string);
echo html_entity_decode($string, ENT_COMPAT, 'UTF-8');
观察
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;
,这就是我们将其声明为参数的原因
SQL查询再次返回@max_titleOUT的输出。所以我们也将它声明为参数。所以最后的参数列表是
@level
现在我们必须将SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT';
值发送到动态查询,这就是我们使用@level
将@level = @IntVariable
值发送到@IntVariable
最后,@level
我们会将@max_titleOUT = @max_title OUTPUT
保存的动态查询输出复制到@max_titleOUT