易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 为主表的谋一条记录,在中间表中同时插入多条数据

有时我们会像下面的情况一样,为主表的谋一条记录,在中间表(T_Stud_Course 表)中同时插入多条数据
T_Student 表
Stud_ID
Name
1
Tom
2
Jack
T_Course 表
Course_ID
Course
1
Chinese
2
English
T_Stud_Course 表
ID
Stud_ID
Course_ID
1
1
1
2
1
2
3
2
2
 
现在我们可以下面的存储过程来实现:
 
--为主表的谋一条记录,在中间表中同时插入多条数据
ALTER proc [dbo].[wholeInsert]
(
  @insert_val nvarchar(1000),   --新增的第一个字段的值(多个用‘,’分隔),如A,B,
  @PK_id nvarchar(50),          --新增数据的第二个字段值,同时也是删除旧数据的条件(不支持多个)
  @col_1 nvarchar(20),          --第一个字段名
  @col_2 nvarchar(20),          --第二个字段名
  @Tab nvarchar(20),            --表名
)
as
begin
    declare @sql varchar(1000)
    declare @strVal nvarchar(100)
    set @sql='delete from '+@Tab+' where '+@col_2+'='+@PK_id
    exec(@sql)
    while(len(@insert_val)>0)
    begin
       set @strVal=substring(@insert_val,1,charindex(',',@insert_val,1)-1)
       set @insert_val=substring(@insert_val,charindex(',',@insert_val,1)+1,len(@insert_val)-charindex(',',@insert_val,1))
       set @sql='insert into '+@Tab+' ('+@col_1+','+@col_2+') values ('+@strVal+','+@PK_id+')'
    exec(@sql)
    end
end
 
执行:
Exec wholeInsert '1,2,','1','Course_ID','Stud_ID','T_Stud_Course'
--表示同时为Stud_ID=1的学生增加两门课程(Course_ID为1和2)
 


相关文档:

SQL Server示例查询

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
  select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
  fr ......

Javascript : JSQL,SQL无处不在,

上回说到,操作Object Array
其实还可以这样操作:
var Room = [
            {
                ID: 'bot',
                name: 'test' ......

转 SQL server 与Oracle开发比较

原文地址:http://www.cnblogs.com/wangxiaohuo/archive/2008/04/20/1162631.html
 
本文档主要从oracle与sql server语法上进行差异性比较,诸如两者在管理,性能,优化等方面的差异不作比较。
●概念上区别
   1.Oracle 是一种对象关系数据库管理系统(ORDBMS),而Sql server 只是关系型数据库管
&nbs ......

PL/SQL语言简介

一、    PL/SQL语言简介
(本讲义之所有程序均调式通过)
首先我们看一个简单之例子,下面这个例子是统计从1至100的总和.
declare
i number:=0;          /*声明变量井给初值*/
t number:=1;
error_message exception;  /*声明一个出错处理*/
begin ......

SQL 多行值合并为一个值

方法(1)
SELECT stuff((select ','+ltrim(ColumnName) from #A for xml path('')
),1,1,'')
/*
102,103,104,105
*/
方法(2)
DECLARE @s NVARCHAR(1000)='';
SELECT @s+=ColumnName+','  from #A;
SELECT @s; ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号