0

spからクエリを返し、それをセッションに割り当てる必要がある状況に遭遇しました。このサンプルクエリ。元のクエリは大きいもので、多くのテーブルに内部結合があります。テーブル名は動的です。sp.Oneには2つのクエリが必要です。実行およびその他はC#ページに送信できます。C#でそのクエリにアクセスする方法。結果は必要ありません。クエリだけです。ここでは、返したいクエリを1つだけ示しています。

例 :

create Procedure Sample
(
@id int
)
as
begin
declare @pid varchar(10)
declare @query varchar(500)

set @pid = cast(@id as varchar(10))

set @query ='select * from Table1 where id = '+@pid+'' 
--Execute sp_executesql @query
--print @query
select @query
end
4

3 に答える 3

1

@Queryを設定した後、SELECTを使用します。これはcシャープページに戻ります。ExecuteNonQuery()メソッドを使用しないように注意してください

SET @query ='select * from Table1 where id = '+@pid+'' 
SELECT @query AS myQuery

たとえば、Cシャープでは

DataSet ds;
YourDataAdapter.Fill(ds);
string query = ds.Tables[0].Rows[0]["myQuery"].ToString();
于 2012-11-21T12:50:37.313 に答える
0

ExecuteScalarを使用すると、これを取得できます

SqlConnection con = new SqlConnection("Your Connection String");
con.Open();
SqlCommand com = new SqlCommand("Sample", con);
com.CommandType = System.Data.CommandType.StoredProcedure;
object query = com.ExecuteScalar();
con.Close();
于 2012-11-21T13:15:31.390 に答える
0

まず、次のようにストアドプロシージャにOUTPUTパラメータを追加する必要があります。

    @ID int , 
    @SQLQuery varchar OUTPUT

ストアドプロシージャコードの後半で、次のように値を設定できます。

    SET @SQLQuery = 'select * from users'

次に、このタイプのコードをC#に追加して、ストアドプロシージャからこのOUTPUTパラメータの値を取得します。

     System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("Sample", cn);
        cmd.CommandType = CommandType.StoredProcedure;
        System.Data.SqlClient.SqlParameter parm = new System.Data.SqlClient.SqlParameter("@ID", SqlDbType.Int);
        parm.Value = 1;
        parm.Direction = ParameterDirection.Input;
        cmd.Parameters.Add(parm);
        System.Data.SqlClient.SqlParameter parm2 = new System.Data.SqlClient.SqlParameter("@SQLQuery", SqlDbType.VarChar);
        parm2.Size = 50;
        parm2.Direction = ParameterDirection.Output; // This is important!
        cmd.Parameters.Add(parm2);
        cn.Open();
        cmd.ExecuteNonQuery();
        cn.Close();

        // Print the output value
        Console.WriteLine(cmd.Parameters["@SQLQuery"].Value);
        Console.ReadLine();

これがあなたの質問に答えることを願っています。はいの場合は、「回答済み」としてマークします。

于 2012-11-21T13:21:57.107 に答える