数据库存储过程,高手请进,如何用存储过程在一次连接中向数据库增加多条记录?

高手请进,如何用存储过程在一次连接中向数据库增加多条记录? - 故障解答 - 电脑教程网

高手请进,如何用存储过程在一次连接中向数据库增加多条记录?

日期:2007-01-07   荐:
高手请进,如何用存储过程在一次连接中向数据库增加多条记录?我以往所用的都是一次只向表中增加一条记录,最近在想,能否一次向表中增加多条记录?在书上也看到过sql server 2000有table数据类型,我的想法是能否定义一个table类型的变量,变量里面保存了若干记录,然后执行的时候向存储过程传递这个table变量,在存储过程里面将变量里面的记录依次取出做insert into操作,不知道这种想法能否实现?或者有没有别的办法?存储过程不接受table类型的变量为参数。存储过程不接受table类型的变量为参数。---這句話是對得我的想法是能否定义一个table类型的变量,变量里面保存了若干记录,然后执行的时候向存储过程传递这个table变量,在存储过程里面将变量里面的记录依次取出做insert into操作,不知道这种想法能否实现?或者有没有别的办法?別得方法通過傳遞 表名 來實現你得要求例如CREATE PROCEDURE copy_1@ a nvarchar(1000) ---表名asexec('select * from ' @a)你執行 copy_1 '表'就可以看到把數據傳入存儲過程了然后用:insert into tablename(a,b,c,d) select a,b,c,d from @temp用了變量就要用動態語句執行exec('')假如你想調用 任意一個表名得 其中2個字段可以這樣定義,@tablename nvarchar(1000) --表名@ col1 nvarchar(1000)--字段@ col2 nvarchar(1000)--字段然後你參照上面給出得動態執行語句就ok了但这样的话,必需要先往那个表里增加记录才行啊,而这时又涉及到我的提问了,我要插入的记录并不是预先就存在于某个表中的这个我有研究,这个使用openxml就好了,存储过程的参数是一个xml文本,然后存储过程解析xml文件,实现插入几个记录,这个方法不但能插入几个记录,还能实现同一个存储过程修改几个表,配合事务简直是天衣无缝?gt;>!!!!!!?br>下面是一段可以在查询分析器run的代码,如果用存储过程的话,当输入字符长于4000(nvarchar)的时候,使用ntext就好DECLARE @idoc intDECLARE @doc varchar(1000)SET @doc ='<ROOT><Customer CustomerID="VINET" ContactName="Paul Henriot"> <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00"> <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/> <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/> </Order></Customer><Customer CustomerID="LILAS" ContactName="Carlos Gonzlez"> <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00"> <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/> </Order></Customer></ROOT>'--Create an internal representation of the XML document.EXEC sp_xml_preparedocument @idoc OUTPUT, @doc-- Execute a SELECT statement that uses the OPENXML rowset provider.SELECT *FROM OPENXML (@idoc, '/ROOT/Customer',1) WITH (CustomerID varchar(10), ContactName varchar(20))对啊,这真是太好了,artmouse(艺术老鼠),能不能说几个你的应用案例,我还没有用过这个,在对多个表修改的时候可不可以配合事务使用?谢谢能否给个配合事务使用的例子?在下感激不尽
标签: