SQL server calling:

declare @sInput1 varchar(20)
declare @sOutput1 varchar(61)
declare @iCount1 int
declare @iRC int

set @sInput1 = 'P01010'
exec @iRC = PTest1 @sInput1, @iCount1 output, @sOutput1 output

select @iRC irc, @sInput1 sInput1, @iCount1 iCount1, @sOutput1 Output1
--------------------------------------------------------------------------------------------
C# calling:

            Console.WriteLine("Test calling store procedure...");
            using (SqlConnection cnn = new SqlConnection(sCNN))
            {
                SqlCommand cmd = new SqlCommand();
                string sInput1;
                string sOutput1;
                long iCount1;
                long iRC;

                sInput1 = "P01010";
                sOutput1 = "";
                iCount1 = -1;
                iRC = -1;

                // ���wStored Procedure�W�ٻP����
                cmd.CommandText = "PTest1";
                cmd.CommandType = CommandType.StoredProcedure;

                // �ѼƦW�٥�����Stored Procedure���ۦP.
                SqlParameter psInput1 = cmd.Parameters.Add("@psInput1", SqlDbType.VarChar, 20);
                SqlParameter piCount1 = cmd.Parameters.Add("@piCount1", SqlDbType.Int);
                SqlParameter psOutput1 = cmd.Parameters.Add("@psOutput1", SqlDbType.VarChar, 61);
                SqlParameter piRC = cmd.Parameters.Add("@iRC", SqlDbType.Int);

                piCount1.Direction = ParameterDirection.InputOutput;
                psOutput1.Direction = ParameterDirection.Output;
                piRC.Direction = ParameterDirection.ReturnValue;

                // Input�Ѽ������������w��
                //cmd.Parameters["@psInput1"].Value = sInput1;
                //cmd.Parameters["@piCount1"].Value = iCount1;
                psInput1.Value = sInput1;
                piCount1.Value = iCount1;

                cmd.Connection = cnn;
                cnn.Open();

                // �`�N: iEffected������return value irc!!
                //int iEffected = Convert.ToInt32( cmd.ExecuteNonQuery());
                int iEffected = cmd.ExecuteNonQuery();

                iRC = (int)piRC.Value;
                iCount1 = (int)piCount1.Value;
                sOutput1 = (string)psOutput1.Value;

                Console.WriteLine("iEffected={0}.", iEffected);
                Console.WriteLine("sInput1={0}.", sInput1);
                Console.WriteLine("sOutput1={0}.", sOutput1);
                Console.WriteLine("iCount1={0}.", iCount1);
                Console.WriteLine("iRC={0}.", iRC);

                cnn.Close();

            }

--------------------------------------------------------------------------------------
Create:

USE [DBLuckWeb]
GO
/****** Object:  StoredProcedure [dbo].[PTest1]    Script Date: 01/03/2009 23:29:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE proc [dbo].[PTest1]
  @psInput1 varchar(20),
  @piCount1 int output,
  @psOutput1 varchar(61) output
as
  declare @iCount int
  declare @iRC int
  set @iCount = 0
  set @iRC = -1

  select @psOutput1=FPgmID+'~'+FName
  from   TSCUProgram
  where  FPgmID=@psInput1
  
  select @iCount=@@rowcount
  if (@iCount>=0)
    set @iRC = 0

  Set @piCount1 = @iCount

-- other test:
declare @now datetime

set @now = getutcdate()

delete [DBSessionState].dbo.ASPStateTempSessions
where expires < @now

-- �Ҧ��t�ιw�s�{�ǭY���榨�\���|�^�� 0�A�Y�o��D 0 ���Ȫ��ܥ��ѡC
-- �кɶq���`��h�AReturn RC=0
  return @iRC