求C#+SQLServer代码:传参,调自定义函数,获取返回值和返回结果集。
我已写了如下能运行的代码,功能是把一个表从SQLServer调入再填入网络中。
哪们能帮助改改,示例说明C#如何调用SQL自定义函数,如何传给自定义函数输入参数、输出参数,如何获得自定义函数返回的单个值、自定义函数返回的结果集。
        private void button1_Click(object sender, EventArgs e)
        {
            string Myconnection = "server=.;database=shui;uid=sa;pwd=nevertell;";
            string sql = "select * from yhb";
            SqlConnection Myconn = new SqlConnection(Myconnection);
            Myconn.Open();
            SqlCommand STcmd = new SqlCommand(sql, Myconn);
            SqlDataAdapter da = new SqlDataAdapter(sql, Myconn);
            DataSet dt = new DataSet();
            da.Fill(dt);
            this.dataGridView1.DataSource = dt.Tables[0]; 
        }

解决方案 »

  1.   

    select *,dbo.functioname(参数) from  tableName
      

  2.   

    create table tb(city varchar(50))
    insert into tb select '日本'
    insert into tb select '美国'
    insert into tb select '印度'alter function getname(@city varchar(50))
    returns varchar(100)
    as
    begin
    return '国家:中国---- 省份:'+@city
    endprivate void button1_Click(object sender, EventArgs e)
            {
                string Myconnection = "server=.;database=shui;uid=sa;pwd=nevertell;";
                string sql = "select dbo.getname(city) as city from tb";
                SqlConnection Myconn = new SqlConnection(Myconnection);
                Myconn.Open();
                SqlCommand STcmd = new SqlCommand(sql, Myconn);
                SqlDataAdapter da = new SqlDataAdapter(sql, Myconn);
                DataSet dt = new DataSet();
                da.Fill(dt);
                this.dataGridView1.DataSource = dt.Tables[0];
            }国家:中国---- 省份:日本
    国家:中国---- 省份:美国
    国家:中国---- 省份:印度
      

  3.   

    谢谢三位回复。
    不过由于俺表述不清,造成兄弟们没明白俺的意思。
    俺是说把C#中的变量做为参数,传入SQLServer的自定义函数中,调用SQLServer自定义函数后再获取返回的单值或结果集。问题分为四个子问题:
    1.C#如何调用SQL自定义函数
    2.C#如何把变量传给SQLServer自定义函数作为输入参数、输出参数
    3.C%如何获得自定义函数返回的单个值
    4.C#如何获得自定义函数返回的结果集
    几位的回复只回答了第1问的一种特殊情况——在sql语句语使用自定义函数,其它各问都没有回答。
      

  4.   

    2.C#如何把变量传给SQLServer自定义函数作为输入参数、输出参数 
    Input,Output,exm:
    spt.Direction = ParameterDirection.Input; 
    spt.Direction = ParameterDirection.Output; 
    3.C%如何获得自定义函数返回的单个值 
    returns 一个值,再赋给某个变量4.C#如何获得自定义函数返回的结果集 
    只能返回一个(要么一个值,要么一个结果集)
    就是returns 后面的
      

  5.   

    Create table a
    (name varchar(20),
    old varchar(20),
    re text)create function getOld(@old varchar(20))
    returns varchar(20)
    as
    begin
    select @old = old from a where name = 'zhang'
    return @old
    end
    declare @old varchar(20)
    select dbo.getOld(@old)这个是SQL中的参数的传入传出的,C#的变量意思也是一样的,把@old改成你定义的变量就可以了
      

  6.   

    try
    {
    string old="";
    System.Data.SqlClient.SqlConnection _con = new System.Data.SqlClient.SqlConnection("server=(local);uid=sa;pwd=;database=zyzhangA");
    string _returnOld="";
    _con.Open();
    System.Data.SqlClient.SqlCommand  _cmd = new System.Data.SqlClient.SqlCommand("select dbo.getOld('"+old+"')",_con);
    _returnOld = (string)_cmd.ExecuteScalar();
    _con.Close();
    MessageBox.Show(_returnOld);
    }
    catch(System.Data.SqlClient.SqlException ex)
    {
    MessageBox.Show(ex.Message);
    }
    这个是把变量传给Sql函数的,并得到返回值的
      

  7.   

    这个是回答你的第四点的:
    try
    {
    string old="";
    System.Data.SqlClient.SqlConnection _con = new System.Data.SqlClient.SqlConnection("server=(local);uid=sa;pwd=p7zx5dez;database=zyzhangA");
    System.Data.SqlClient.SqlDataAdapter  _sqlada = new System.Data.SqlClient.SqlDataAdapter("select dbo.getOld('"+old+"')",_con);
    //这边假设dbo.getOld函数返回一个数据集
    System.Data.DataSet _ds = new System.Data.DataSet();
    _sqlada.Fill(_ds);
    MessageBox.Show(_ds.Tables[0].Rows[0][0].ToString());
    }
    catch(System.Data.SqlClient.SqlException ex)
    {
    MessageBox.Show(ex.Message);
    }
      

  8.   

    学习了!! 
    帮你顶!!就象调用SQL的存储过程类似