Kay9999 2022-01-28 14:50 采纳率: 0%
浏览 19

SQL View 如何引用存储过程内容

我原来想把表内的 字段名变成当月月份,如 字段名:[month1] 变成 [Jun.2022] 再变成视图,在网页上调用的,网上找了个例子于是写成:

DECLARE @m1 varchar(20),@m2 varchar(20),@m3 varchar(20)
set @m1=substring( (DateName( month, getdate())),1,3) +'.'+DATENAME(Year,GETDATE())
set @m2=substring( (DATENAME(month, DATEADD(MONTH, 1, GETDATE()))),1,3) +'.'+DATENAME(Year, DATEADD(MONTH, 1, GETDATE()))
set @m3=substring( (DATENAME(month, DATEADD(MONTH, 2, GETDATE()))),1,3) +'.'+DATENAME(Year,DATEADD(MONTH, 2, GETDATE()))

declare @sql varchar(1000)
set @sql='select month1 as ''' +  @m1  +''' ,month2 as ''' +  @m2  +''' ,month3 as ''' +  @m3  +'''  [T - cast]'
exec(@sql)

结果可以,但不能保存成View ,于是又写成存储过程

USE [SYS1]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[cast] AS

DECLARE @m1 varchar(20),@m2 varchar(20),@m3 varchar(20)
set @m1=substring( (DateName( month, getdate())),1,3) +'.'+DATENAME(Year,GETDATE())
set @m2=substring( (DATENAME(month, DATEADD(MONTH, 1, GETDATE()))),1,3) +'.'+DATENAME(Year, DATEADD(MONTH, 1, GETDATE()))
set @m3=substring( (DATENAME(month, DATEADD(MONTH, 2, GETDATE()))),1,3) +'.'+DATENAME(Year,DATEADD(MONTH, 2, GETDATE()))

declare @sql varchar(1000)
set @sql='select month1 as ''' +  @m1  +''' ,month2 as ''' +  @m2  +''' ,month3 as ''' +  @m3  +'''  [T - cast]'
exec(@sql)

下图是我想要在视图中显示的效果。

img

写好了又发现不知怎样调用这个结果保存成 View. 请各位指导一下我该怎样实现,谢谢各位。

  • 写回答

1条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-01-28 15:10
    关注

    你这个其实就是一个拼接sql字符串,并执行的过程,“@sql”这个变量里就是放的要执行的sql,因此,如果要创建视图,只需要在这个sql前面再拼上一段" create view 视图名称 as "就好了,比如

    set @sql='create view test_view1 as select month1 as ''' +  @m1  +''' ,month2 as ''' +  @m2  +''' ,month3 as ''' +  @m3  +'''  [T - cast]'
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月28日

悬赏问题

  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?