zoukankan      html  css  js  c++  java
  • SQL 用户定义表类型,在存储过程里使用数据类型作參数

    在数据库编程里使用数据类型,能够提高代码的重用性。它们常常被使用在方法和存储过程中。使用数据类型,我们能够避免在存储过程里定义一串的參数,让人眼花缭乱,它就相当于面向对象语言里。向一个方法里传入一个对象,而该对象有各种属性,存储过程仅仅须要获取这个对象就能获取到各个參数,然后做出对应的处理。有所不同的是SQL的表类型是能够包括多条数据的。到底是怎么一回事,且看以下的样例。


    1. 首先我创建了一个学生表,包括四个字段,主键是从1開始的自增长型。

    GO
    CREATE TABLE STUDENT(
    	ID INT IDENTITY(1,1) PRIMARY KEY,
    	NAME VARCHAR(50),
    	SEX CHAR,
    	PHONE VARCHAR(20),
    );

    2.定义表类型SUTDENTTYPE,包括三个字段,分别相应学生表的NAME,SEX和PHONE。之所以如此创建,我是准备在插入新学生数据的存储过程中。以它为參数。

    GO
    CREATE TYPE SUTDENTTYPE AS TABLE(
    	NAME VARCHAR(50),
    	SEX CHAR,
    	PHONE VARCHAR(20)
    );


    3.创建插入学生信息的存储过程。它的參数类型是表类型STUDENTTYPE。

    取出表类型里存储的各条学生记录,将其插入到学生信息表中。

    GO
    CREATE PROCEDURE ADDSTUDENT
    	@NEW_STUDENT AS SUTDENTTYPE READONLY
    
    	AS
    	INSERT INTO STUDENT (NAME, SEX, PHONE)
    		SELECT NAME, SEX, PHONE FROM @NEW_STUDENT;
    
    	RETURN 0;
    

    4.最后建立參数值并运行存储过程ADDSTUDENT。

    GO
    DECLARE @NEW_STUDENT as SUTDENTTYPE
    
    INSERT @NEW_STUDENT
     VALUES ('YLD', 'M', '888')
          , ('MM', 'F', '123')
          , ('HQG', 'F', '678')
    ; 
    EXEC ADDSTUDENT @NEW_STUDENT


    5.查询STUDENT表的信息,发现已经成功插入了三条学生信息。



  • 相关阅读:
    hdu 5101 Select
    hdu 5100 Chessboard
    cf B. I.O.U.
    cf C. Inna and Dima
    cf B. Inna and Nine
    cf C. Counting Kangaroos is Fun
    Radar Installation 贪心
    spfa模板
    Sequence
    棋盘问题
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6857847.html
Copyright © 2011-2022 走看看