问题是这样的:
存储过程如下
ALTER PROCEDURE [dbo].[AddUser] 
(
@UserName varchar(50),
@UserPwd varchar(100)
)
AS
if not exists(select * from Users where UserName=@UserName)
BEGIN
    insert into Users(UserName,UserPwd) values(@UserName,@UserPwd)
SELECT 'Y'
RETURN 
END
else 
BEGIN
SELECT 'N'
return 
END我现在 要在后台程序中得到'Y'和‘N’的值该怎么办
要如何写代码,各位大虾教我啊

解决方案 »

  1.   

    ALTER PROCEDURE [dbo].[AddUser] 

    @UserName varchar(50), 
    @UserPwd varchar(100),
    @FLAG varchar(100) OUTPUT

    AS 
    if not exists(select * from UserS where UserName=@UserName) 
    BEGIN 
         insert into Users(UserName,UserPwd) values(@UserName,@UserPwd) 
    SET @FLAG= 'Y' 
    END 
    else 
    BEGIN 
    SET @FLAG='N' 
    END DECLARE @UserName varchar(50)
    DECLARE @UserPwd varchar(100)
    DECLARE @FLAG varchar(100) EXEC [dbo].[AddUser] @UserName='A',@UserPwd='123',@FLAG OUTPUTSELECT @FLAG
      

  2.   

    好像在delphi中可以用adoquery来做,我看到过,大概是这样    ADOQuery4.close;
        ADOQuery4.SQL.Clear;
        ADOQuery4.SQL.Add('exec AddUser '............);
        ADOQuery4.SQL.Add('');
        ADOQuery4.Prepared;
        ADOQuery4.Open;
        while not ADOQuery4.Eof do
        begin
                if ADOQuery4.Fields[0].AsString='N' then
            begin
           ............但是在c#中该怎么来做啊!肯定应该有方法的啊!谁晓得啊!
      

  3.   

    ...
    System.Data.SqlClient.SqlCommand cmd....
    ....
    Convert.ToString(cmd.ExecuteScalar()); //Y or N
      

  4.   


    其实你的过程已返回一张表,只是表里存在一行一列,你调过完过程后,或者说你填充到ds里了.那么取值string ResultStr=ds.Table[0].Rows[0][0].ToString();
    ResultStr就是你要的值
      

  5.   

    楼上这位仁兄说的,我之前也有想到,但是本人愚钝,不知道那个dataset要怎么填充呢?执行完存储过程后,要怎么获得那个表呢?还望不吝赐教啊!
      

  6.   

    最好的做法不是填充DataSet, 太浪费资源了,一般而言能不用DataSet的,就尽量不要用DataSet.执行Command的ExecuteScalar()即可得到第一行第一列的值。因为是object,因为需要Convert.ToString()转换一下。
      

  7.   

    ERREOR老兄说的甚是,问题也解决了!
    但是还有一节就是那为宝马老兄说的该怎么填充dataset呢
    这个我还是没想到啊!
    请指教啊!
      

  8.   

    这个应该利用SQLCOMMAND命令,然后COMMANDTEXT.COMMANDTYPE是存储过程类型,加参数传递应该可以填充了
      

  9.   


    就是通过数据适配器来填充
    如下:例子
    public static DataTable CommQuery(int querytype,string selecttext)
            {
                SqlDataAdapter sda = new SqlDataAdapter();
                SqlCommand cmd = new SqlCommand("lt_query", GetConn());
                sda.SelectCommand = cmd;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@querytype", System.Data.SqlDbType.Int).Value = querytype;
                cmd.Parameters.Add("@selecttext", System.Data.SqlDbType.NVarChar,4000).Value = selecttext;
                DataSet ds = new DataSet();
                sda.Fill(ds);//填充数据集
                GetConn().Close();
                DataTable dt = ds.Tables[0];//返回数据表
                return dt;
            }你的问题8楼的方式取数可取.问题解决了就行.