gpt4 book ai didi

sql-server - 在 Laravel、MSSQL 中测试存储过程

转载 作者:行者123 更新时间:2023-12-03 03:21:31 25 4
gpt4 key购买 nike

我想在我的 Laravel 项目中调用存储过程。我正在使用 MSSQL Azure 数据库。例如这个:click here

DECLARE @return_value int, @OutputReference xml
EXEC @return_value = [sp_GetAllShopInfo] @OutputReference = @OutputReference OUTPUT
SELECT @OutputReference as N'@OutputReference' SELECT 'Return Value' = @return_value
GO

我想返回一个数据表、一个返回值(int)和一个输出引用(xml)。

DB::select() 和插入查询对我不起作用。我不会得到返回值和输出引用。

我试过这个click here

不幸的是,我收到一条错误消息:

The $OutputReference and $ReturnValue is undefined.

public function testSP()
{
try {
// Roep de stored procedure aan om de resultaten op te halen
$results = DB::select('
DECLARE @return_value int;
DECLARE @OutputReference xml;

EXEC @return_value = [sp_GetAllShopInfo]
@OutputReference = @OutputReference OUTPUT;

SELECT @OutputReference as OutputReference, @return_value as ReturnValue;
');

if (!empty($results)) {
// Haal de XML-response en returnwaarde op
$xmlResponse = $results[0]->OutputReference;
$returnValue = $results[0]->ReturnValue;

// Doe iets met de XML-response en returnwaarde
return response()->json([
'message' => 'Stored procedure uitgevoerd',
'xmlResponse' => $xmlResponse,
'returnValue' => $returnValue,
]);
} else {
// Geen resultaten ontvangen van de stored procedure
return response()->json(['error' => 'Geen resultaten ontvangen']);
}
} catch (QueryException $e) {
// Als een databasefout optreedt, genereer een aangepaste foutmelding
return response()->json(['error' => 'Databasefout']);
}
}

最佳答案

问题在于您使用DB::select的方式。您的 SQL 看起来像这样。

DECLARE ...;
EXEC ...;
SELECT ...;

DECLAREEXECSELECT 是 3 个不同的语句。 DB::select 用于从 SELECT 语句返回值。

对于不返回值的语句(或者您并不真正关心返回值的语句),您需要使用DB::statement

DB::statement("DECLARE ...");
DB::statement("EXEC ...");
$result = DB::select("SELECT ...");
DB::statement("DECLARE @return_value int, @OutputReference xml");
DB::statement("EXEC @return_value = [sp_GetAllShopInfo] @OutputReference = @OutputReference OUTPUT");
$result = DB::select("SELECT @OutputReference as OutputReference, @return_value as ReturnValue");

关于sql-server - 在 Laravel、MSSQL 中测试存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77155756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com