林雨其蒙吧 关注:4贴子:141
  • 3回复贴,共1

存储过程使用

只看楼主收藏回复

 /// <summary>
/// 调用存储过程,创建SqlDataReader对象 如select * from 表.在存储结构中实现,应用在读取分类等信息
/// <param name="strProcName">存储过程名</param>
/// <param name="strProResult">返回存储对象</param>
/// </summary>
///this.rpProductType.DataSource = new TDB("SQL").ProGetDataSet("GetClass");
    ///this.rpProductType.DataBind();
///存储过程示例:CREATE PROCEDURE GetClass AS  BEGIN SET NOCOUNT ON; SELECT*FROM productClass END GO
public SqlDataReader ProGetDataSet(string strProcName)
    {
 
  try
{
     SqlCommand cmd=new SqlCommand(strProcName,this._SqlConnection);
     cmd.CommandType = CommandType.StoredProcedure;
 SqlDataReader strProResult=cmd.ExecuteReader(CommandBehavior.CloseConnection);
 return strProResult;
 }
 catch
{
this.CloseConnection();
return null;
}
  
}


IP属地:广西1楼2007-12-28 15:15回复
    • 58.62.53.*
    1. 通过把处理封装在容易适应的单元中,简化复杂的操作。

    2. 由于不要求反复建立一系列处理步骤,保证了数据的一致性。如果所有开发人员和应用程序都使用同一存储过程,则所使用的代码都是相同的。

    这一点的延伸就是防止错误。需要执行的步骤越多,出错的可能性就越大。防止错误保证了数据的一致性。

    3. 简化对变动的管理。如果表名、列名或业务逻辑(或别的内容)有变化,只需要更改存储过程的代码。使用它的人员甚至不需要知道这些变化。

    这一点的延伸就是安全性。通过存储过程限制对基础数据的访问减少了数据讹误(无意识的或别的原因所导致的数据讹误)的机会。

    4. 因为存储过程通常以编译过的形式存储,所以DBMS为处理命令所作的工作较少。结果是提高了性能。

    5. 存在一些只能用在单个请求中的SQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码。

    总之使用存储过程有三个主要的好处,即简单、安全、高性能。


    2楼2008-11-08 14:48
    回复
      删除表
      DECLARE @Tb_Name varchar(30) --定义游标操作 
      DECLARE staff_cursor CURSOR FOR 
       SELECT [name] FROM sys.sysobjects 
       WHERE type='U' 
      -- 打开游标 
      OPEN staff_cursor 
      -- 提取记录数据 
      FETCH Next FROM staff_cursor Into @Tb_Name 
       WHILE @@fetch_status = 0 
       BEGIN 
       EXEC('DROP TABLE ' + @Tb_Name ) 
       PRINT @Tb_Name 
       FETCH Next FROM staff_cursor Into @Tb_Name 
       END 
      CLOSE staff_cursor -- 关闭游标 
      DEALLOCATE staff_cursor -- 释放游标资源


      IP属地:广西3楼2008-11-14 14:42
      回复
        删除存储过程
        DECLARE @Sp_Name varchar(30) --定义游标操作 
        DECLARE @Tb_Count int 
        SET @Tb_Count = 0 
        DECLARE staff_cursor CURSOR FOR 
         SELECT [name] FROM sys.sysobjects 
         WHERE type='p' AND Category =0 --Category =0 表示 
        -- 打开游标 
        OPEN staff_cursor 
        -- 提取记录数据 
        FETCH Next FROM staff_cursor Into @Sp_Name 
         PRINT '开始删除存储过程' 
         WHILE @@fetch_status = 0 
         BEGIN 
         SET @Tb_Count = @Tb_Count + 1 
         EXEC('DROP PROCEDURE ' + @Sp_Name ) 
         PRINT CONVERT(varchar(20),@Tb_Count) + ': ' + @Sp_Name 
         FETCH Next FROM staff_cursor Into @Sp_Name 
         END 
         print '总共删除' + CONVERT(varchar(20),@Tb_Count) + '个存储过程' 
        CLOSE staff_cursor -- 关闭游标 
        DEALLOCATE staff_cursor -- 释放游标资源


        IP属地:广西4楼2008-11-14 14:42
        回复