SQL服务器+ PHP - 存储过程与多个SELECT返回垃圾输出
我试图与输出SQL服务器+ PHP - 存储过程与多个SELECT返回垃圾输出
SQL服务器
CREATE PROCEDURE sp_test1
@in_var VARCHAR(20),
@out_var VARCHAR(50) OUTPUT
AS
BEGIN
SELECT * FROM Company WHERE COM_ID=1
SELECT @out_var = 'Hello, ' + @in_var
END
PHP
创建一个SQL Server存储过程$result = "";
$sql = "{CALL sp_test1(?,?)}";
$param = array(
array("Andy",SQLSRV_PARAM_IN),
array($result, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR), SQLSRV_SQLTYPE_VARCHAR(50))
);
$stmt = sqlsrv_query($conn, $sql, $param);
echo $result;
当我回应结果时,它将返回垃圾文本而不是'你好,安迪'。我意识到我不能放2个以上的select语句,如果我删除了第一个select,那么输出就OK了。但我需要一些逻辑的选择语句。
SELECT * FROM Company WHERE COM_ID=1 -- will be used in logic later
SELECT @out_var = 'Hello, ' + @in_var -- i just want to output this!
那么我怎样才能强制输出只有LAST SELECT语句?
为什么你不尝试使用另一个变量只是为了控制?根据值,您返回一个选择或另一个。事情是这样的:
CREATE PROCEDURE sp_test1
@option INT,
@in_var VARCHAR(20),
@out_var VARCHAR(50) OUTPUT
AS
BEGIN
IF @option = 0
SELECT * FROM Company WHERE COM_ID=1
ELSE
SELECT @out_var = 'Hello, ' + @in_var
END
因此,在这种情况下,你通过像@option = 1
和过程返回"Hello"
。当你需要其他为你的逻辑,你可以调用的程序,并通过@option = 0
让我们只是说我需要两个SELECT在一起,没有其他的方式。 – navilink
你应该看到这个:http://php.net/mssql_next_result – fnightangel
也许你想要得到他们两人在一个查询?: 好,如果你愿意,你可以这样做:
SELECT *, @out_var = 'Hello, ' + @in_var FROM Company WHERE COM_ID=1
试加';'在你选择查询之间:'SELECT * FROM Company WHERE COM_ID = 1; SELECT out_var ='Hello,'+ in_var'或者你想在一个查询中获得两个变量? – Viscocent
添加';'似乎没有帮助:( – navilink