SQLSERVER2008 存储过程基本语法

一、定义变量
--简单赋值
declare @a int
set @a=5
print @a

--使用select语句赋值
declare @user1 nvarchar(50)
select @user1= ‘张三‘
print @user1
declare @user2 nvarchar(50)
select @user2 = Name from ST_User where ID=1
print @user2

--使用update语句赋值
declare @user3 nvarchar(50)
update ST_User set @user3 = Name where ID=1
print @user3

二、表、临时表、表变量
--创建临时表1
create table #DU_User1
(
[ID] [ int ] NOT NULL ,
[Oid] [ int ] NOT NULL ,
[Login] [nvarchar](50) NOT NULL ,
[Rtx] [nvarchar](4) NOT NULL ,
[ Name ] [nvarchar](5) NOT NULL ,
[ Password ] [nvarchar]( max ) NULL ,
[State] [nvarchar](8) NOT NULL
);
--向临时表1插入一条记录
insert into #DU_User1 (ID,Oid,[Login],Rtx, Name ,[ Password ],State) values (100,2, ‘LS‘ , ‘0000‘ , ‘临时‘ , ‘321‘ , ‘特殊‘ );

--从ST_User查询数据,填充至新生成的临时表
select * into #DU_User2 from ST_User where ID<8

--查询并联合两临时表
select * from #DU_User2 where ID<3 union select * from #DU_User1

--删除两临时表
drop table #DU_User1
drop table #DU_User2

--创建临时表
CREATE TABLE #t
(
[ID] [ int ] NOT NULL ,
[Oid] [ int ] NOT NULL ,
[Login] [nvarchar](50) NOT NULL ,
[Rtx] [nvarchar](4) NOT NULL ,
[ Name ] [nvarchar](5) NOT NULL ,
[ Password ] [nvarchar]( max ) NULL ,
[State] [nvarchar](8) NOT NULL ,
)

--将查询结果集(多条数据)插入临时表
insert into #t select * from ST_User

--添加一列,为int型自增长子段
alter table #t add [myid] int NOT NULL IDENTITY(1,1)
--添加一列,默认填充全球唯一标识
alter table #t add [myid1] uniqueidentifier NOT NULL default (newid())
select * from #t
drop table #t

--给查询结果集增加自增长列
--无主键时:
select IDENTITY( int ,1,1) as ID, Name ,[Login],[ Password ] into #t from ST_User
select * from #t

--有主键时:
select ( select SUM (1) from ST_User where ID<= a.ID) as myID,* from ST_User a order by myID
--定义表变量
declare @t table
(
id int not null ,
msg nvarchar(50) null
)
insert into @t values (1, ‘1‘ )
insert into @t values (2, ‘2‘ )
select * from @t

三、循环
--while循环
declare @a int
declare @ sum int
set @a=1
set @ sum =0
while @a<=100
begin
set @ sum [email protected]
set @a+=1
end
print @ sum

四、条件语句
--if,else条件分支
if(1+1=2)
begin
print ‘对‘
end
else
begin
print ‘错‘
end

--when then条件分支
declare @today int
declare @week nvarchar(3)
set @today=3
set @week= case
when @today=1 then ‘星期一‘
when @today=2 then ‘星期二‘
when @today=3 then ‘星期三‘
when @today=4 then ‘星期四‘
when @today=5 then ‘星期五‘
when @today=6 then ‘星期六‘
when @today=7 then ‘星期日‘
else ‘值错误‘
end
print @week

五、游标
declare @ID int
declare @Oid int
declare @Login varchar (50)

--定义一个游标
declare user_cur cursor for select ID,Oid,[Login] from ST_User
--打开游标
open user_cur
while @@fetch_status=0
begin
--读取游标
fetch next from user_cur into @ID,@Oid,@Login
print @ID
--print @Login
end
close user_cur
--摧毁游标
deallocate user_cur

六、触发器
--创建触发器
Create trigger User_OnUpdate
On ST_User
for Update
As
declare @msg nvarchar(50)
[email protected]记录修改情况
select @msg = N ‘姓名从“‘ + Deleted. Name + N ‘”修改为“‘ + Inserted. Name + ‘”‘ from Inserted,Deleted
--插入日志表
insert into [LOG](MSG) values (@msg)

--删除触发器
drop trigger User_OnUpdate

七、存储过程
--创建带output参数的存储过程
CREATE PROCEDURE PR_Sum
@a int ,
@b int ,
@ sum int output
AS
BEGIN
set @ sum [email protected][email protected]
END

--创建Return返回值存储过程
CREATE PROCEDURE PR_Sum2
@a int ,
@b int
AS
BEGIN
Return @[email protected]
END

--执行存储过程获取output型返回值
declare @mysum int
execute PR_Sum 1,2,@mysum output
print @mysum

--执行存储过程获取Return型返回值
declare @mysum2 int
execute @mysum2= PR_Sum2 1,2
print @mysum2

八、自定义函数
--新建标量值函数
create function FUNC_Sum1
(
@a int ,
@b int
)
returns int
as
begin
return @[email protected]
end

--新建内联表值函数
create function FUNC_UserTab_1
(
@myId int
)
returns table
as
return ( select * from ST_User where ID<@myId)

--新建多语句表值函数
create function FUNC_UserTab_2
(
@myId int
)
returns @t table
(
[ID] [ int ] NOT NULL ,
[Oid] [ int ] NOT NULL ,
[Login] [nvarchar](50) NOT NULL ,
[Rtx] [nvarchar](4) NOT NULL ,
[ Name ] [nvarchar](5) NOT NULL ,
[ Password ] [nvarchar]( max ) NULL ,
[State] [nvarchar](8) NOT NULL
)
as
begin
insert into @t select * from ST_User where ID<@myId
return
end

--调用表值函数
select * from dbo.FUNC_UserTab_1(15)
--调用标量值函数
declare @s int
set @s=dbo.FUNC_Sum1(100,50)
print @s

--删除标量值函数
drop function FUNC_Sum1

时间: 2024-10-08 08:02:06

SQLSERVER2008 存储过程基本语法的相关文章

hibernateTemplate 调用 sqlServer2008存储过程 范列

新建存储过程 USE [数据库名] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER   proc [dbo].[p_basecheck](@dm varchar(30),@mc varchar(200),@bz varchar(200),@RET INT OUT)       as     SET NOCOUNT ON     begin    set @RET=1000  select 4  retvalue end java

Oracle存储过程基本语法介绍

Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体. 行3: BEGIN关键词表明PL/SQL体的开始. 行4: NULL PL/SQL语句表明什么事都不做,这句不能删

SQLServer存储过程基本语法

SQLSERVER: 变量的声明:声明变量时必须在变量前加@符号DECLARE @I INT 变量的赋值:变量赋值时变量前必须加setSET @I = 30 声明多个变量:DECLARE @s varchar(10),@a INT if语句: Java代码 if .. begin ... end else if .. begin ... end else begin ... end Example: Sql代码 DECLARE @d INT set @d = 1 IF @d = 1 BEGIN

Oracle存储过程function语法及案例

create or replace function F01_SX03_SUM(statdate varchar2, code varchar2, para varchar2) RETURN number IS v_me number; v_mb number; begin if para = 'me' then select nvl(sum(nvl(me, 0)), 0) / 10000 into v_me from sx03_gl_accass t where t.ccode like (c

Oracle存储过程Procedure语法及案例

create or replace procedure replace(desstr in varchar2, replacestr in varchar2, tablename in varchar2, strgranularity in varchar2, strorgankey in varchar2, strstatisticdate in date) is begin update t41_systemcal_upday t1 set t1.calchar = replace(t1.c

Oracle存储过程基本语法 存储过程

Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体. 行3: BEGIN关键词表明PL/SQL体的开始. 行4: NULL PL/SQL语句表明什么事都不做,这句不能删

SQLServer - 存储过程基本语法

oracle的建表sql转成sqlserver的建表sql时的注意点 : 1.所有的comment语句需要删除. 2.clob类型转换为text类型. 3.blob类型转换为image类型. 4.number类型转换为int,number(16,2)等转换为decimal(16,2),number(18)转换为bigint. 5.default sysdate改为default getDate(). 6.to_date('2009-12-18','yyyy-mm-dd')改为cast('2009

Oracle存储过程基本语法

存储过程 1  CREATE OR REPLACE PROCEDURE 存储过程名 2  IS 3  BEGIN 4  NULL; 5  END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体. 行3: BEGIN关键词表明PL/SQL体的开始. 行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL

(转)Oracle存储过程基本语法

本文转载自:http://www.cnblogs.com/hero4china/articles/base_rule_oracle_procedure.html 存储过程 1  CREATE OR REPLACE PROCEDURE 存储过程名 2  IS 3  BEGIN 4  NULL; 5  END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面