我在MSSQLServer中的存储过程中遇到问题,这是验证已存在值的正确语法吗?
ALTER PROCEDURE [dbo].[sp_SRP_DuplicateData]
-- Add the parameters for the stored procedure here
@BankName nvarchar(50),
@BankCode nvarchar(5)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT BankName, BankCode FROM ZREF_ROUT_INCO_DOC where BankName=@BankName
and BankCode=@BankCode
END
这是我的php代码
<?php
if(isset($_POST['SUBMIT']))
{
$query = sqlsrv_query($conn, "EXEC sp_SRP_DuplicateData(?,?)");
if(sqlsrv_num_rows($query)>0)
{
echo "Bank Name or Bank Code already exist";
}
}
?>
这是表格
<label class="form-top">Add Bank</label>
<div class="form-group">
<form action="test.php" method="POST">
<div class="modal-body" style="text-align: left;">
<b>Bank Name:</b><input type="text" name="BankName" value=""
id="" class="" /><br>
<b>Bank Abbreviation: </b><input type="text" name="BankCode"
value="" id="" class="" /> <br>
<input type="SUBMIT" name="SUBMIT" value="Proceed" id="Bank"
class="btn btn-lg btn-default" />
为了将值传递给存储过程,您需要向sqlsrv_query函数提供一个值数组。。。
$query = sqlsrv_query($conn, "EXEC sp_SRP_DuplicateData(?,?)", array( $_POST['BankName'], $_POST['BankCode'] ));
您发布的存储过程在我看来还可以,但是您启用了SET NOCOUNT,我相信它不会返回sqlsrv_num_rows函数所需的行数。您应该使用sqlsrv_has_rows函数来测试行。。。
if(sqlsrv_has_rows($query))
{
echo "Bank Name or Bank Code already exist";
}