T-SQL(二)函数和存储过程

数据源
pubs 示例数据库

目标
1、编写自定义函数;
2、编写自定义存储过程;
3、编写客户端程序,实现调用存储过程,显示返回select结果集、返回值和输出参数。

代码

-- T-SQL
-- 定义函数
-- 函数通过作家的姓名检索出作家的ID结果集
create function get_author_id
  (
  @author_lname varchar(20),
    @author_fname varchar(20)
  )
  returns table
  as
    return(select authors.au_id from authors
    where @author_fname = authors.au_fname and @author_lname = authors.au_lname)

-- 定义存储过程
create proc get_author_titles_info
  @author_lname varchar(20),
    @author_fname varchar(20),
      @mark varchar(5) output
  as
  begin
    select titles.title_id, titles.title from titleauthor, titles
    where titleauthor.title_id = titles.title_id and titleauthor.au_id in (
      select *
      from get_author_id(@author_lname, @author_fname)
    )
    set @mark = 'yeah!'
    return 1
  end

-- 存储过程的返回值和输出值
create table call_proc_output(
  re varchar(20),
  m varchar(20)
)
# Python
import pymssql

# 连接本地示例数据库
conn = pymssql.connect(server='localhost', database='pubs')

# 创建游标
cur = conn.cursor()

# 执行 SQL 语句
sql = '''
declare @re int
declare @mark varchar(5)
drop table call_proc_output
create table call_proc_output(
  re varchar(20),
  m varchar(20)
)
exec @re = dbo.get_author_titles_info 'Green', 'Marjorie', @mark output
insert into call_proc_output values (@re, @mark)
'''
cur.execute(sql)

# 获取执行结果
result = cur.fetchall()

# 打印结果
print(result)
#

# 查看返回值和输出值
sql = '''
select * from call_proc_output
'''
cur.execute(sql)
result = cur.fetchall()
print(result)

# 关闭连接
conn.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值