This Domain(Admin5.com) is for Sale:

Ultradev专题使用数据库存储过程给子表格增加多个记录

时间:2007-12-23  来源:不详  作者:迈克DB


  你已经预备好改变UltraDev代码了吗?为了使这个网页可以使用多行插入,我不得不对commJobAdd存储过程的代码做大量的改变。现在我必须做的唯一改变示打开commAddJob命令并
改变以下变量:

名字 初始页面:类型,方向,尺寸 新页面:类型,方向,尺寸 @CategoryID Integer, 4, in Varchar, 100, in

缺省的数值支持:(nothing),而Run-time(运行)数值支持:Request("CategoryID")。

总体解释

  我们使用存储过程来插入数据,因为我们要插入记录到两个表格(Jobs和JobCategory)中去。当用户在AddJobs.asp表单中点击Add Job (增加工作)按钮,它将作为Request(请求)变量发送所有的表单数值给AddConfirm.asp页面。 当网页装载时候这个commJobAdd存储过程运行。可以利用Request变量和使用信息来插入数据到Jobs表格中。

  Jobs表格使用JobID作为主键区域。SQL Server 7用一个非凡数据库数值,即@@标识,它等于主键区域的数值,可以用于新插入记录。这个存储记录使用@@标识数值作为JobID。 本文来自织梦

  你会注重到我们也创建了存储过程来传递一个OUTPUT数值给@JobID,@JobID示新插入工作记录的JobID数值。这个JobID数值首先传递给spJobSearch存储过程(这个过程集中了rsJobSearch记录集),同时传递给spJobCategories存储过程(这个过程集中了rsJobCategories记录集)并且显示所有的新增工作信息给用户。

存储过程

commJobAdd

  对于那些熟悉存储过程的人会注重到只需对在教程2中我们使用的存储过程做一小部分改变。

  这里我们定义@CategoryID 和 @PopulationID作为字符,因为我们要传递多选列表给存储过程。假如用户只选择列表中的一项,它将传递2(假如2是CategoryID)。假如多项被选择,它将
发送一个逗号相隔的列表,如“2,3,5”。虽然CategoryID区域示一个整数,我们必须将数值
转换为字符,这样它就可以通过存储过程正确的传送。我们创建一个动态SQL语句是为了正确
分列CategoryID。我们创建一个新变量@CatInsert作为动态SQL语句并且执行这个语句。SQL允
许当你有多行要插入时可以使用INSERT...SELECT语句,

代码如下:

DECLARE @CatInsert varchar(2000) -- Declare a new variable for the dynamic SQL 织梦好,好织梦
statement

SET @CatInsert = 'INSERT INTO JobCategory (JobID, CategoryID) SELECT '
CONVERT(varchar,@JobID) ', Category1ID From CategoryType Where Category1ID IN ('
@CategoryID ')' -- Create a SELECT statement that includes the new JOBID and
compares whatever is in @CATEGORYID list with against the values in the
CategoryType Lookup table.


假如你只选择了列表框中的一个数值,你将就只得到一行插入到JobCategory表格:

@JobID Value @CategoryID Value 2 3

假如你只选择了列表框中的一个数值,你将就只得到一行插入到JobCategory表格:
 
@JobID Value @CategoryID Value 2 3 2 4 2 5

具体代码如下:

Alter PROCEDURE "spAddJob"
-- Author: Rick Curtis
-- Date: July 21, 2000
-- Purpose: Insert new entry into Jobs table and related data into child tables
JobCategory and JobPopulations
-- Declare variables for inserts to all 3 tables
(@CompanyID [int], @JobTypeID [int], @RegionID [int], @JobTitle [varchar](100),

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容