通常对数据的操作大多会有三种类型(增加,更新,删除),那么是否可以将这三种类型全部放在同一个存储过程里?
如果可以,
数据库的存储过程应该如何写?
C#在CS里又如何实现数据的操作?请分别给出完整的语句,万分感谢!

解决方案 »

  1.   

    补充一下,本人使用的是oracle数据库
      

  2.   

    1. 先更正一下,数据库的常用操作有4种:增、删、改、查。其中查在这里面的重要程度至少可以排第二;
    2. SQL语言分为三中类型:DML,DDL和DCL,上面4种操作属于DML;
    3. 增、删、改三种操作当然可以同时放在同一个存储过程中,包括查也可以放在其中。但极少有人这么做,因为这违背了一个过程责任单一的原则,对可读性、可维护性都是非常不利的;
    4. 数据库的存储过程的写法,不同的数据库是不同的,Oracle的要用PL/SQL,简单的Stored procedure是很容易写的,建议你找本PL/SQL的书看看,最多一个小时,你就可以掌握Oracle的Stored Procedure是怎么写的;
    5. SQL,包括PL/SQL都是很容上手,但忠告是:很容易上手的东西,往往很难精通:)
    6. C#在CS里又如何实现数据的操作? 如果没有理解错楼主的问题的话,建议参考:C#访问SQL Server以及数据操作
    C#操作Oracle数据库中的数据和此类似,但ConnectString和部分细节会有所不同,这个建议到网上搜搜,很多的。
      

  3.   

    同意三楼的说法再就是,楼主说的,写Oracle的存储过程以及在C#中调用存储过程的例子,再网上有很多
    可以自己搜索一下
      

  4.   

    如果你要把这些刚能写在一个存储过程里面得话,也可以,不过就是麻烦点,你给存储过程设定一个参数,比如@state int
    if(@state=1)
    begin
    //查询功能
    end
    if(@state=2)
    begin
    //添加功能
    end
    if(@state=3)
    begin
    //修改功能
    end
    if(@state=4)
    begin
    //删除功能
    end这样就OK了
      

  5.   

    create or replace procedure menu_proc(r_menuid varchar(10))
    IS
    begin
     select * from menu where menuid=r_menuid;
    end xmenu_proc;晕死,我在oracle 9i写下这样的存储过程,可以成功创建但在该存储过程左上角有个X,提示无法使用,怎么回事啊?
    权限不够?
      

  6.   

    修正一下,
    create or replace procedure menu_proc(r_menuid varchar(10)) 
    IS 
    begin 
    select * from menu where menuid=r_menuid; 
    end menu_proc; 晕死,我在oracle 9i写下这样的存储过程,可以成功创建但在该存储过程左上角有个X,提示无法使用,怎么回事啊? 
    权限不够?
      

  7.   

    用同一存储过程解决insert,update,delete语句是下下的选择
    如果一个表中有10个字段,是否无论是什么操作都要传这10个参数分开来写吧,可以把 insert和update 写在一个存储过程
    用参数ID是否为空lai判断是插入还是修改