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表的信息,发现已经成功插入了三条学生信息。



  • 相关阅读:
    k8s 权限控制初探
    golang gRPC 入门
    gpushare-scheduler-extender 升级依赖引发关于 golang dep 工具的思考
    admission webhook 初探(编译篇)
    以 gpushare-device-plugin 为例,探究 Resource yaml 配置
    编译 gpushare-device-plugin
    浅谈 docker 挂载 GPU 原理
    CCF计算机职业资格认证考试题解
    优达学城机器学习工程师纳米学位项目介绍
    IEEEXtreme 极限编程大赛题解
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6857847.html
Copyright © 2011-2022 走看看