精华内容
下载资源
问答
  • postgresql 存储过程返回表

    千次阅读 2019-05-15 10:35:14
    with 的作用是生成一张临时,在递归查询中应该都用到吧(with recursive t as(sql))

    在这里插入图片描述
    with 的作用是生成一张临时表,在递归查询中应该都用到吧(with recursive t as(sql))

    CREATE OR REPLACE FUNCTION getCostAndVm (datacenterid INTEGER) 
       RETURNS TABLE (
          t1 INT4,
    			PoweredOffVM BIGINT,
    			PoweredOnVM BIGINT,
    			Svm BIGINT,
    			llvm BIGINT,
    			zvm BIGINT
    ) 
    AS $$
    BEGIN
       RETURN QUERY
    select
    	team as t1,
    	COUNT(CASE WHEN vi.state = 'Off' THEN 1 ELSE NULL END) as "PoweredOffVM",
    	COUNT(CASE WHEN vi.state = 'On' THEN 1 ELSE NULL END) as "PoweredOnVM",
    	COUNT(CASE WHEN vi.state = 'Suspended' THEN 1 ELSE NULL END) as "Svm",
    	COUNT(CASE WHEN vi.up_time > '1 month'::interval THEN 1 ELSE NULL END) as "llvm",
    	COUNT(CASE WHEN vi.off_interval > '60 days'::interval THEN 1 ELSE NULL END) as "zvm"
    from dashboard_vm_instance_withteam vi
    where vi.datacenter_id=datacenterid
    group by datacenter_id ,t1;
    END
    $$ LANGUAGE 'plpgsql';
    
    展开全文
  • 的结构跟存储过程返回的结果集是相同的,类型什么的最好也一样。 create table #temTable( FSerialNum int, billNo varchar(200), Flevel varchar(200), beginDate datetime, FNumber varchar(500), ...

     先将整个代码放出来,接下来一步步说明。

    create table #temTable(
      FSerialNum int,
      billNo varchar(200),
      Flevel varchar(200),
      beginDate datetime,
      FNumber varchar(500),
      FName varchar(500),
      FModel varchar(1000),
      FAttribute varchar(200),
      FUnit varchar(200),
      FDosage decimal(28,10),
      FLoss decimal(28,10),
      FNetWeight decimal(28,10)
    )
    
    insert into #temTable exec proc_gd_expandmultiorderbomBYSO 'HS19-2222'
    
    select FSerialNum,billNo,Flevel,beginDate,FNumber,FName,FModel,FAttribute,FUnit,SUM(FDosage)as FDosage,FLoss,FNetWeight
    from #temTable where customStatus=990240 
    group by FNumber,FSerialNum,billNo,Flevel,beginDate,FName,FModel,FAttribute,FUnit,FLoss,FNetWeight
    
    drop table #temTable

    步骤一:创建一个临时表

    表的结构跟存储过程返回的结果集是相同的,类型什么的最好也一样。

    create table #temTable(
      FSerialNum int,
      billNo varchar(200),
      Flevel varchar(200),
      beginDate datetime,
      FNumber varchar(500),
      FName varchar(500),
      FModel varchar(1000),
      FAttribute varchar(200),
      FUnit varchar(200),
      FDosage decimal(28,10),
      FLoss decimal(28,10),
      FNetWeight decimal(28,10)
    )

    步骤二:将结果集复制到临时表中

    insert into #temTable exec proc_gd_expandmultiorderbomBYSO 'HS19-2222'

    此处,我踩到了一个坑。刚开始 FModel 的类型我设为 varchar(100),结果报错:String or binary data would be truncated.

    解决方法是 alter table #temTable alter column FModel varchar(1000) not null 

    不懂请看https://blog.csdn.net/Alone_in_/article/details/102933521

    步骤四:对临时表进行操作

    select FSerialNum,billNo,Flevel,beginDate,FNumber,FName,
    FModel,FAttribute,FUnit,SUM(FDosage)as FDosage,FLoss,FNetWeight
    from #temTable 
    where customStatus=990240 
    group by FNumber,FSerialNum,billNo,Flevel,beginDate,FName,FModel,FAttribute,FUnit,FLoss,FNetWeight

    这里又掉一个坑:https://blog.csdn.net/Alone_in_/article/details/102933739

    步骤五:就是将临时表删除啦!

    drop table #temTable

    始乱终弃不是我本意,为了节省空间嘛。

    补充:

    我在另一个地方再次用这种方法,发现报错了!

    消息 8164,级别 16,状态 1,过程 MaterialSplit,第 65 行
    An INSERT EXEC statement cannot be nested.

    因为在存储过程里面返回的结果集,也是通过 insert exec 另一个存储过程 生成的,而sqlserver不允许这种嵌套。

    解决方案:

    https://blog.csdn.net/ocean42234111/article/details/52301298

    展开全文
  • c# 通过存储过程返回表集合

    千次阅读 2011-10-26 14:56:37
    DataSet ds = new DataSet(); SqlConnection conn = new SqlConnection(Properties.Settings.Default.MyDataBaseConnectionString); conn.Open(); SqlCommand cmd = new Sql
     
    
     DataSet ds = new DataSet();
                SqlConnection conn = new SqlConnection(Properties.Settings.Default.MyDataBaseConnectionString);
                conn.Open();
                SqlCommand cmd = new SqlCommand("GetTablePro",conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                adapter.Fill(ds);
                if(ds.Tables.Count > 1)
                dataGridView1.DataSource = ds.Tables[1];

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:	<Description,,>
    -- =============================================
    ALTER PROCEDURE [dbo].[GetTablePro]
    	-- Add the parameters for the stored procedure here
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
    
        -- Insert statements for procedure here
        select * from employee;
        SELECT * from class;
    
    END

    展开全文
  • 定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all ...现在想用SQL语句来调用这个存储过程,并把他返回放入变量中.可以如下做: declare @table ...

    定义一个存储过程如下:

    create proc [dbo].[test1]
    @id int
    as
    select 1 as id,'abc' as name union all 
    select @id as id,'zzz' as name

     

    返回两行数据.
    现在想用SQL语句来调用这个存储过程,并把他返回的表放入变量中.可以如下做:

    declare   @table   table(id   int,name varchar(50))--定义表变量来存放存储过程返回的内容
    insert  into @table exec test1 2--将存储过程执行的结果放入表变量中
    select *
    from @table    --查看表变量中的结果
    

     

    这么写的话,如果列很多,将会很麻烦

    目前没有一个类似 as temp表的方法

    select * from (exec test1 1) as temp

    后续再找找看吧

    展开全文
  • 之前是用SQLServer的,对mysql不熟,现在需要用到mysql。有个存储过程互相调用的问题: ...此存储过程执行并返回一个table。 另一个存储过程p2,调用p1,用临时接收p1的结果集。 在存储过程p2里调用p1该怎么写?
  • oracle 函数,存储过程返回一个.

    千次阅读 2018-11-26 10:57:12
    1. 首先,我们需要创建一个Object 类型结构体. create or replace type t_record as object ( ...2.创建一个以t_record Obhect类型 的类型. create or replace type t_table as table of t_record; /   ...
  • 通过调用存储过程不但能返回值,还能返回一张,下面的代码中实现了创建一个临时,并返回这个(支持多个)的用法。希望对大家有帮助,这里还涉及到一个临时的创建,什么是sql server真正的临时,并发不冲突...
  • -- 创建存储过程 CREATE PROCEDURE test() BEGIN select * from t_user; END; -- 调用 call test(); import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; ...
  • mysql存储过程利用临时表返回结果集

    万次阅读 2019-03-18 22:53:06
    2,不建议在mysql中拼接sql,会使存储过程显得很臃肿,可以使用or来动态判别传入的参数是否为空 and ( TTB.office_id=输入参数 or 输入参数 is null or 输入参数 = '') and ( TTB.office_i...
  • 创建一个存储过程 CREATE PROCEDURE GetStudent(IN ageMin int, IN gradeMin int) BEGIN SELECT * FROM student WHERE age &amp;amp;gt; ageMin AND grade &amp;amp;gt; gradeMin; END; 简单...
  • sqlserver创建存储过程返回table

    千次阅读 2018-07-25 17:06:00
    --创建存储过程test create procedure [dbo].[test] ( @I_MTR NVARCHAR (MAX), @I_TYPE NVARCHAR (MAX), @I_FAC NVARCHAR (MAX)) as BEGIN select * from [dbo].[BAS_DOC] ...
  • oracle 存储过程返回 结果集 table形式

    万次阅读 2018-05-23 13:50:23
    --sys_refcursor 和 cursor 优缺点比较优点比较优点一:sys_refcursor,可以在存储过程中作为参数返回一个table格式的结构集(我把他认为是table类型,容易理解,其实是一个游标集), cursor 只能用在存储过程,...
  • 大家好,本人是一只写存储过程和游标的菜鸟,本篇博客没有什么干货,纯粹是想记录一下自己第一次使用游标的所得。之前只是听说个这两个概念,上周我们老大突然让我尝试着写存储过程和游标来实现一些功能,我花了两天...
  • Oracle存储过程返回结果集

    万次阅读 2017-12-15 15:25:19
    Oracle存储过程返回结果集都是以SYS_REFCURSOR的方式返回的,我们一般看不到这个返回的具体内容,今天我们换了一种变通的方式来处理存储过程返回的结果集,让我们在PL/SQL中可以查看Oracle自定义函数返回的结果集。...
  • C#执行SQL存储过程返回表

    千次阅读 2007-06-22 12:43:00
    参考参考:/* 创建一个名为Get的储存过程先定义两个参数 ,其中@count为输出参数sql语句中 第一句返回该表所有内容, 第二句 返回表的行数,并把值赋给输出参数*/CREATE PROCEDURE [Get] @name varchar (50), @count int...
  • sqlserver,获取调用存储过程返回数据的方法。 1,获取存储过程最后select返回的结果集。SELECT 数据集返回值。 因为select返回的结果是一个。所以返回的结果需要用一个接收。使用临时接收。 被调用的存储...
  • 定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name ...现在想用SQL语句来调用这个存储过程,并把他返回放入变量中.可以如下做: declare @table table
  • SpringBoot调用存储过程

    千次阅读 2020-09-01 20:39:23
    第一种:返回带参数的存储过程 第二种:返回结果集 第三种:第一种+第二种(不讨论) 数据库环境准备 数据库:MySQL 创建及数据 CREATE TABLE `order` ( `uuid` varchar(32) CHARACTER SET utf8 COLLATE utf8_...
  • PostgreSQL存储过程返回数据集实例

    千次阅读 2015-01-16 17:01:34
    这里用一个实例来演示PostgreSQL存储过程如何返回数据集. 1 首先准备数据 //member_category create table member_category(id serial, name text, discount_rate real, base_integral integer); alter table ...
  • 存储过程中可以定义输出变量,返回值,执行存储过程还能获得结果集。每个存储过程的默认返回值为0。下面紧接着上文 SQL Server中存储过程Stored Procedure创建及C#调用 基础上写的一个新的Stored Procedure存储过程...
  • thinkphp调用存储过程返回结果集

    千次阅读 2014-08-23 11:21:55
    // if(0===stripos($str, 'call')){ // 存储过程查询支持 // $this->close(); // $this->connected = false; // } $this->initConnect(false); if ( !$this->_linkID ) return false; $this->queryStr = $str...
  • oracle 存储过程返回结果集合

    千次阅读 2018-10-30 14:15:43
    oracle的存储过程和其他的不同,返回结果集合要用游标来传递,同时存储过程要定义在package程序包中。 一、传递一个参数,返回一个结果集 1.先创建程序包和包体,两者关系类似类和类中的方法 create or replace ...
  • MYSQL存储过程查询返回结果处理方法

    千次阅读 2021-01-20 00:09:10
    一、MYSQL创建语句1.1 创建SET FOREIGN_KEY_CHECKS=0;DROP TABLE IF EXISTS `testproc`;CREATE TABLE `testproc` (`id` int(4) NOT NULL,`name` varchar(100) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB ...
  • oracle存储过程返回一个结果集

    千次阅读 2019-07-10 21:45:08
    存储过程是没有返回值的,只是在参数列表中使用in,out类型参数来区分输入变量参数和输出参数,在sqlplus中,我们可以进行打印输出。 关于输出变量的类型,其实简单点可以是字符型,数字型,复杂点可以是结果集,任意...
  • 使用存储过程返回结果集

    万次阅读 2018-12-10 10:30:18
    因业务复杂,SQL较为庞大,后改造为存储过程方式,传参,获取结果集,此处只显示存储过程的结构部分,也是最重要部分 CREATE OR REPLACE PACKAGE PKG_QUALITYCONTROL IS TYPE retcursor IS REF CURSOR; ...
  • oracle 存储过程返回结果集

    万次阅读 2018-06-01 10:53:15
    只需要定义一个结果集,把东西存到结果集中就结束(这个结果集叫做游标),先创建存储过程: [plain]   view plain   copy create or replace procedure Demo(data out sys_refcursor) is  begin   open...
  • DB2 存储过程返回结果集

    千次阅读 2018-05-14 21:26:21
    存储过程返回结果集,但是并未明确定义out参数的情况下,要正确获取到结果集,则必须明确设置返回结果集个数:result set 结果集个数如果没有声明返回结果集个数,那么存储过程中定义的游标是获取不到其值的1:创建...
  • oracle使用存储过程返回数据集

    千次阅读 2018-05-22 18:48:44
    我们知道sql server的存储过程在执行之后,返回的就是一个集合。但是oracle如果要获得一个输出集合,就要麻烦一点了。 oracle获得输出集合是通过游标实现的,而且游标需要在package中进行声明。下面就拿分页的存储...
  • 创建一个返回select结果集的存储过程: --创建procedure create or replace procedure pro_emp(resule out sys_refcursor) is begin open resule for select * from emp; end; 调用: --调用 declare cur1 ...
  • mysql使用存储过程插入记录并返回自增id踩坑(由于不同中相同字段导致的错误 1. 附上mysql插入记录后返回自增id的方法链接 mysql插入数据后返回自增ID的方法. 2. 出问题的存储过程 CREATE PROCEDURE `proc_test`...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,152,873
精华内容 461,149
关键字:

存储过程返回表

友情链接: fie_ee62.zip