SQL Server 存储过程入门学习
创建存储过程之前要先用use语句声明要将存储过程存储在哪个数据库中. e.g use company; 执行之.之后就可以声明存储过程了. e.g create procedure *** @id varchar(50) , @name int output as select @name=name from table where id=@id 然后可以用alter对存储过程进行修改. declare可以声明一个变量 用set对变量赋值 e.g alter proc getempp @ID int
as
declare @Department int
select @Department=a.Department
from company.dbo.employee a
inner join company.dbo.department b
on a.Department=b.ID
where a.ID=@ID
if @@ROWCOUNT>0
begin
select *
from company.dbo.department
where ID=@Department
select * from company.dbo.employee
where Department=@Department
end
else
begin
RAISERROR('No record found',10,1)
end 上例中的@Department是被选择出来的值,然后用来为下面的if语句块中的查询服务的.
相关文档:
exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
如下:
表A
ID NAME
1 A1
2 A2
3 A3
表B
ID AID NAME
1 1 B1
2 & ......
并集:
使用 UNION 运算符组合多个结果
SELECT name,num from Table1
UNION
SELECT name,num from Table2
注意:查询的字段个数必须相同,Table2的字段类型要跟Table1的相同.
如果使用 UNION 运算符,那么单独的 SELECT 语句不能包含其自己的 ORDER BY 或 COMPUTE 子句。只能在最后一个 SELECT 语句的后面使用一个 ORD ......
前面有TX留言问分页的sql是怎么样的,看完这篇你也就知道了。 组件可以输出执行的sql,方便查看sql生成的语句是否有问题。 通过注册事件来输出sql DbSession.Default.RegisterSqlLogger(database_OnLog);
private string sql;
void database_OnLog(string logMsg)
{
//保存执行的DbCommand (sql语 ......
使用Tranact-SQL 编写代码来创建一个新表:
USE [OnlineJudge]
GO
/****** Object: Table [dbo].[User1] Script Date: 05/17/2010 14:05:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[User2](/*notice convert the tablename*/
[num] [int]IDENTITY(1,1) NOT N ......
第一种:
select b.* from
( select a.*, rownum row_num from
(select t.* from A05_ORGANIZATION t order by org_name_en asc) a
) b
where b.row_num between 1 and 5 order by b.row_num asc
第二种(更高效):
select b.* from
( select a.*, rown ......