我正在尝试运行SQL存储过程,并使用PHP的PDO类将执行命令传递给服务器。下面是我现在的脚本:
$db = new PDO("dblib:dbname=databaseName;host=hostName", databaseUser, databasePassword);
$query = "
USE [thisDatabase]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[thisSproc]
@State = 'GA',
@Type = 'Counseling',
@PVCampusVueCode = NULL
SELECT 'Return Value' = @return_value
GO";
$stmt = $db->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
请注意,当直接在数据库本身上运行该查询时,将正确返回结果而没有错误。
然而,当我使用我的PHP脚本运行它,我解析结果,我得到一个语法错误附近的词'GO' (SQL错误102)。这是因为命令以单行形式传递给SQL服务器,没有换行。因此,它最终看起来像这样:
USE [thisDatabase] GO DECLARE @return_value int EXEC @return_value = [dbo].[thisSproc] @State = 'GA', @Type = 'Counseling', @PVCampusVueCode = NULL SELECT 'Return Value' = @return_value GO
这是一个问题,因为显然'GO'命令必须在它自己的行上。
我已经四处寻找修复这个,不能找到一个。如何保留换行以便查询正确执行,或者以其他方式解决问题?
将查询作为单独的query()
调用运行。