列如我有个表:字段 姓名,性别
然后我想通过存储过程插入100条数据
姓名  性别
张三   男
李四   女以前写习惯了,N多insert直接执行,现在换成存储语句 。我该如何操作!谢谢,在线等存储行业数据

解决方案 »

  1.   


    create procedure sp_name()
    begin
    .........
    end
      

  2.   

    你总要把内容都传入存储过程吧,然后在里面分离,遍历insert
      

  3.   

    Create Prc [inserts] @name varcher(20),@sex carcher(4)
    as 
    bagin
      insert into table(name,sex) values (@name,@sex)
    end
    *********************************************************
    就这样。你在页面上写一个循环用这个存储过程就行了
      

  4.   

    存储过程我都写好了了
       protected void Button2_Click(object sender, EventArgs e)
            {
                SqlHelp he = new SqlHelp();
    //是不是在这里加FOR循环呢?,这样和我直接insert 100句连一起啊有什么区别
            int i =    he.RunProcedureNonQuery("asd",sqlp("a","b"));
                
            }
            public SqlParameter[] sqlp(string name,string pwd)
            {
                SqlParameter[] par = new SqlParameter[2];
                par[0] = new SqlParameter("@uid", name);
                par[1] = new SqlParameter("@userPwd", pwd);          
                return par;
            }
      

  5.   

    你这样就没意义了吧跟你insert一样执行100次就是跟数据库交互100次
      

  6.   

    @xml参数传递,批量数据插入。
      

  7.   

    你可以把要插入的值组成一个数组,然后再拆分,这里有两个函数是专为这种数组提供的,Get_StrArrayLength(取得字符串的长度-元素的个数)和Get_StrArrayStrOfIndex(按指定符号分割字符串,返回分割后指定索引的第几个元素),然后遍历数组取值,再用while循环,这是第一种方法,只不过比较麻烦
    第二种方法,就是你把值插入新建一个表中,然后在存储过程中一次查询出来返回一个表,再然后来循环取该表中的值,循环播插入目标表中
      

  8.   

    这两个函数需要自己编写:
    CREATE function Get_StrArrayLength
    (
     @str varchar(1024),  --要分割的字符串
     @split varchar(10)  --分隔符号
    )
    returns int
    CREATE function Get_StrArrayStrOfIndex
    (
     @str varchar(1024),  --要分割的字符串
     @split varchar(10),  --分隔符号
     @index int --取第几个元素
    )
    returns varchar(1024)
      

  9.   

    create procedure [存储过程名称]
    (
     @id int [output]   --参数
    )as
      select * from [表名]  --sql语句集
    go
      

  10.   

    楼主,给你个规范的查询存储过程
    (通用查询)
    IF OBJECT_ID('存储过程名')>0
       DROP PROC 存储过程名
    GO
    CREATE PROC 存储过程名
        @bname NVARCHAR(50),   --要查询的表名
        @lname NVARCHAR(50),   --要查询的列名
        @where NVARCHAR(500)   --条件(可以为空)
    AS
       DECLARE @sql NVARCHAR(1000)  --sql语句
        SET @sql='SELECT '+@lname+' FROM '+@bname+' WHERE 1=1 '+@where
       EXEC (@sql)
    GO
      

  11.   

    如果是oracle,用数组参数就解决了
      

  12.   

    建一个存储过程,然后把你的Insert语句写进去