从存储过程中获取一些价值 不能

本文关键字:不能 获取 存储 存储过程 过程中 | 更新日期: 2023-09-27 18:36:48

我输入用户名,我想获取所有详细信息作为输出。首先,我用php代码向您展示,

$strSQLUSER="SELECT * FROM User WHERE username='".addslashes($MessageArray[0])."' AND state!='1' AND state!='4'";
$result_user=odbc_exec($conn,$strSQLUSER) or die("Could not connect to database");

$huntername   = stripslashes(odbc_result($result_user,"name"));
$huntlicense = stripslashes(odbc_result($result_user,"license"));

然后我使用我的 .net 编码,这是编码的一部分。

 private void MooseSeenInput(string MobileNo, string Date, string odd, params Array[] msg_arr)
    {
        controller = new UnitsController();
        DataSet ds = controller.GetUserDetails(username);
        if (ds.Tables[0].Rows.Count > 0)
        {
            //get username & License
            string user=ds.Tables[0].Rows[0]["name"].ToString();
            string license= ds.Tables[0].Rows[0]["license"].ToString();
        }

然后我为此编写了存储过程...但我不适合这个程序,

ALTER PROCEDURE dbo.
 @UserName varchar(50),
 @License  varchar(50) OUTPUT
 AS
 BEGIN
 Select * FROM
 Users
Where UserName = @UserName & State ='1' & State= '4'
END
-

-执行GetSMSUserDetails_SP

另外,在这里我添加了sqldataprovider部分

 public override DataSet GetSMSUserDetails(string UserName)
    {
        return SqlHelper.ExecuteDataset(ViltraConnectionString, GetFullyQualifiedName("GetSMSUserDetails_SP"),UserName);
    }
     #endregion SMS

从存储过程中获取一些价值 不能

在 sql server 中使用 And 而不是 & for string concat。

从 SP 中删除Out Parameter,因为您要返回记录。

ALTER PROCEDURE dbo.GetSMSUserDetails_SP
 @UserName varchar(50)
 AS
 BEGIN
     Select * FROM
     Users
    Where UserName = @UserName and State Not IN ('1' ,'4')
END

带有输出参数的 SP。

   ALTER PROCEDURE dbo.Getsmsuserdetails_sp @UserName varchar(50), 
                                         @License  varchar(50) output,
                                         @name  varchar(50) output
AS 
  BEGIN 
      SELECT TOP 1 @License = License, @name = name 
      FROM   Users 
      WHERE  UserName = @UserName 
             AND State NOT IN ( '1', '4' ) 
  END 

你不希望查询是..

和状态不在 ( '1', '4' ) ? 因为,您在发布的拳头代码中使用了 !='1'

此外,请考虑仅返回所需的字段,而不是使用返回所有字段的"SELECT *"。