精华内容
下载资源
问答
  • 这个里面比如收入,每月存储在一行里面,但是,我要算月累计值,比如,现在是3月,我要求1月加二月加三月收入累计值,怎么求啊,问题是写在存储过程中,最好一句话解决。麻烦给个大概例子能懂就行了。![图片...
  • 怎么把这个存储过程写好,编译不报错,测试报错![图片](https://img-ask.csdn.net/upload/201707/29/1501314510_285240.jpg)![图片](https://img-ask.csdn.net/upload/201707/29/1501314500_695633.jpg)![图片]...
  • 在网上也找到许多关于.NET中使用存储过程获取输出参数代码,但怎么怎么都是记不住,还是自己亲自实践一遍后再记录下来,这样才能记得住,必竟自己做过东西是比较难忘记!!!  步骤如下:  ①建立数据库...

    在网上也找到许多关于.NET中使用存储过程获取输出参数的代码,但怎么看怎么都是记不住,还是自己亲自实践一遍后再记录下来,这样才能记得住,必竟自己做过的东西是比较难忘记的!!!
        步骤如下:
        ①建立数据库logintest,在数据库中建立表User.

        向建立的表中添加几条测试数据.
        ②在数据库中建立存储过程:

    SQL code  

    USE[logintest]
    GO
    -- =============================================
    -- Author:        牛腩
    -- Create date: 2008-10-21 14:01
    -- Description:    通过传入的uid获取用户姓名
    -- =============================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATEPROCEDURE[dbo].[GetUNameById]
    @uidint,
    @namevarchar(50) output
    AS
    BEGIN
        select@name=uname from[User]where uid=@uid
    END

     ③在VS中建立一个测试页面ProcTest.aspx,在ProcTest.aspx.cs中导入命名空间

    C# code

     using System.Data;

    using System.Data.SqlClient;

     
    ④在Page_Load方法里写入如下代码:

    C# code  

    // 建立连接字符串,在正式项目中可放在web.config中
            string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";
            // 连接数据库
            SqlConnection conn = new SqlConnection(connStr);
            try
            {
                // 打开数据库连接
                conn.Open();
                // 创建用于执行数据库操作的命令对象, GetUNameById为存储过程名称
                SqlCommand cmd = new SqlCommand("GetUNameById", conn);
                // 设置执行命令的方式为存储过程
                cmd.CommandType = CommandType.StoredProcedure;
                // 向命令对象添加存储过程所需要的参数
                cmd.Parameters.Add("@uid", SqlDbType.Int);
                // 设置要传入到存储过程的参数值
                cmd.Parameters["@uid"].Value = 2;
     
                // 添加存储过程中的输出参数,如果是字符型的必须定义长度
    
                cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);
                // 设置参数为output输出参数
                cmd.Parameters["@name"].Direction = ParameterDirection.Output;
    
                // 执行存储过程
                cmd.ExecuteReader();
                // 获取执行存储过程后的输出参数
                string name = cmd.Parameters["@name"].Value.ToString();
                Response.Write(name);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            } 


        运行ASPX页面,则能够看到执行存储过程后返回的结果!
       需要注意的是如果输出参数是varchar类型的话则必须定义长度,否则会出错,如果输出参数是数字型的话就不必定义长度了!
        下面是完整的ProcTest.aspx.cs的源码:

    C# code  

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    publicpartialclass ProcTest : System.Web.UI.Page
    {
        protectedvoid Page_Load(object sender, EventArgs e)
        {
            // 建立连接字符串,在正式项目中可放在web.config中
            string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";
            // 连接数据库
            SqlConnection conn = new SqlConnection(connStr);
            try
            {
                // 打开数据库连接
                conn.Open();
                // 创建用于执行数据库操作的命令对象, GetUNameById为存储过程名称
                SqlCommand cmd = new SqlCommand("GetUNameById", conn);
                // 设置执行命令的方式为存储过程
                cmd.CommandType = CommandType.StoredProcedure;
                // 向命令对象添加存储过程所需要的参数
                cmd.Parameters.Add("@uid", SqlDbType.Int);
                // 设置要传入到存储过程的参数值
                cmd.Parameters["@uid"].Value = 2;
                // 添加存储过程中的输出参数
                cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);
    
                // 设置参数为output输出参数
                cmd.Parameters["@name"].Direction = ParameterDirection.Output;
                // 执行存储过程
                cmd.ExecuteReader();
                // 获取执行存储过程后的输出参数
                string name = cmd.Parameters["@name"].Value.ToString();
                Response.Write(name);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            } 
        }
    } 
    展开全文
  • oracle通过查询DBA_SEGMENTS表获取表空间文件信息,包括表空间名称,大小等 ? 1 select tablespace_name,sum(max_size),sum(bytes) from dba_...将上面sql语句放到存储过程中执行,有时候会oracle通过查询DBA_S...

    oracle通过查询DBA_SEGMENTS表获取表空间文件信息,包括表空间名称,大小等 ? 1 select tablespace_name,sum(max_size),sum(bytes) from dba_segments group by tablespace_name; max_size和bytes的单位是字节。将上面的sql语句放到存储过程中执行,有时候会

    oracle通过查询DBA_SEGMENTS表获取表空间文件信息,,包括表空间名称,大小等

    ?

    1

    select tablespace_name,sum(max_size),sum(bytes) from dba_segments group by tablespace_name;

    max_size和bytes的单位是字节。将上面的sql语句放到存储过程中执行,有时候会出现dba_segments“表或视图不存在”错误。这是由于没有把dba_segments表的查询权限赋给当前用户。需要执行下面的语句进行授权。

    ?

    1

    grant select on dba_segments to user

    user为要授权的用户名。如果还需要其他权限,可以用下面语句把所有权限都赋给user

    ?

    1

    grant all on dba_segments to user; 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

    展开全文
  • 在网上也找到许多关于.NET中使用存储过程获取输出参数代码,但怎么怎么都是记不住,还是自己亲自实践一遍后再记录下来,这样才能记得住,必竟自己做过东西是比较难忘记!!! 步骤如下: ①建立数据库logintest,在...

    http://niunan.javaeye.com/category/42319

    在网上也找到许多关于.NET中使用存储过程获取输出参数的代码,但怎么看怎么都是记不住,还是自己亲自实践一遍后再记录下来,这样才能记得住,必竟自己做过的东西是比较难忘记的!!!
        步骤如下:
        ①建立数据库logintest,在数据库中建立表User.

         向建立的表中添加几条测试数据.
        ②在数据库中建立存储过程:

    Sql代码 复制代码
    1. USE [logintest]   
    2. GO   
    3. -- =============================================   
    4. -- Author:      牛腩   
    5. -- Create date: 2008-10-21 14:01   
    6. -- Description: 通过传入的uid获取用户姓名   
    7. -- =============================================   
    8. SET ANSI_NULLS ON  
    9. GO   
    10. SET QUOTED_IDENTIFIER ON  
    11. GO   
    12. CREATE PROCEDURE [dbo].[GetUNameById]   
    13. @uid int,   
    14. @name varchar(50) output  
    15. AS  
    16. BEGIN  
    17.     select @name=uname from [Userwhere uid=@uid   
    18. END  
    USE [logintest]
    GO
    -- =============================================
    -- Author:		牛腩
    -- Create date: 2008-10-21 14:01
    -- Description:	通过传入的uid获取用户姓名
    -- =============================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE [dbo].[GetUNameById]
    @uid int,
    @name varchar(50) output
    AS
    BEGIN
    	select @name=uname from [User] where uid=@uid
    END
    

        ③在VS中建立一个测试页面ProcTest.aspx,在ProcTest.aspx.cs中导入命名空间
    C#代码 复制代码
    1. using System.Data;   
    2. using System.Data.SqlClient;  
    using System.Data;
    using System.Data.SqlClient;
    

        ④在Page_Load方法里写入如下代码:
    C#代码 复制代码
    1. // 建立连接字符串,在正式项目中可放在web.config中   
    2.        string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";   
    3.        // 连接数据库   
    4.        SqlConnection conn = new SqlConnection(connStr);   
    5.   
    6.        try  
    7.        {   
    8.            // 打开数据库连接   
    9.            conn.Open();   
    10.            // 创建用于执行数据库操作的命令对象, GetUNameById为存储过程名称   
    11.            SqlCommand cmd = new SqlCommand("GetUNameById", conn);   
    12.            // 设置执行命令的方式为存储过程   
    13.            cmd.CommandType = CommandType.StoredProcedure;   
    14.   
    15.            // 向命令对象添加存储过程所需要的参数   
    16.            cmd.Parameters.Add("@uid", SqlDbType.Int);   
    17.            // 设置要传入到存储过程的参数值   
    18.            cmd.Parameters["@uid"].Value = 2;   
    19.   
    20.            // 添加存储过程中的输出参数,如果是字符型的必须定义长度   
    21.            cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);   
    22.            // 设置参数为output输出参数   
    23.            cmd.Parameters["@name"].Direction = ParameterDirection.Output;   
    24.   
    25.            // 执行存储过程   
    26.            cmd.ExecuteReader();   
    27.   
    28.            // 获取执行存储过程后的输出参数   
    29.            string name = cmd.Parameters["@name"].Value.ToString();   
    30.   
    31.            Response.Write(name);   
    32.        }   
    33.        catch (Exception ex)   
    34.        {   
    35.            Response.Write(ex.Message);   
    36.            if (conn.State == ConnectionState.Open)   
    37.            {   
    38.                conn.Close();   
    39.            }   
    40.        }   
    41.        finally  
    42.        {   
    43.            if (conn.State == ConnectionState.Open)   
    44.            {   
    45.                conn.Close();   
    46.            }   
    47.        }   
     // 建立连接字符串,在正式项目中可放在web.config中
            string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";
            // 连接数据库
            SqlConnection conn = new SqlConnection(connStr);
    
            try
            {
                // 打开数据库连接
                conn.Open();
                // 创建用于执行数据库操作的命令对象, GetUNameById为存储过程名称
                SqlCommand cmd = new SqlCommand("GetUNameById", conn);
                // 设置执行命令的方式为存储过程
                cmd.CommandType = CommandType.StoredProcedure;
    
                // 向命令对象添加存储过程所需要的参数
                cmd.Parameters.Add("@uid", SqlDbType.Int);
                // 设置要传入到存储过程的参数值
                cmd.Parameters["@uid"].Value = 2;
    
                // 添加存储过程中的输出参数,如果是字符型的必须定义长度
                cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);
                // 设置参数为output输出参数
                cmd.Parameters["@name"].Direction = ParameterDirection.Output;
    
                // 执行存储过程
                cmd.ExecuteReader();
    
                // 获取执行存储过程后的输出参数
                string name = cmd.Parameters["@name"].Value.ToString();
    
                Response.Write(name);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            } 
    

        运行ASPX页面,则能够看到执行存储过程后返回的结果!
        需要注意的是如果输出参数是varchar类型的话则必须定义长度,否则会出错,如果输出参数是数字型的话就不必定义长度了!
        下面是完整的ProcTest.aspx.cs的源码:
    C#代码 复制代码
    1. using System;   
    2. using System.Collections.Generic;   
    3. using System.Linq;   
    4. using System.Web;   
    5. using System.Web.UI;   
    6. using System.Web.UI.WebControls;   
    7. using System.Data;   
    8. using System.Data.SqlClient;   
    9.   
    10. public partial class ProcTest : System.Web.UI.Page   
    11. {   
    12.     protected void Page_Load(object sender, EventArgs e)   
    13.     {   
    14.         // 建立连接字符串,在正式项目中可放在web.config中   
    15.         string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";   
    16.         // 连接数据库   
    17.         SqlConnection conn = new SqlConnection(connStr);   
    18.   
    19.         try  
    20.         {   
    21.             // 打开数据库连接   
    22.             conn.Open();   
    23.             // 创建用于执行数据库操作的命令对象, GetUNameById为存储过程名称   
    24.             SqlCommand cmd = new SqlCommand("GetUNameById", conn);   
    25.             // 设置执行命令的方式为存储过程   
    26.             cmd.CommandType = CommandType.StoredProcedure;   
    27.   
    28.             // 向命令对象添加存储过程所需要的参数   
    29.             cmd.Parameters.Add("@uid", SqlDbType.Int);   
    30.             // 设置要传入到存储过程的参数值   
    31.             cmd.Parameters["@uid"].Value = 2;   
    32.   
    33.             // 添加存储过程中的输出参数   
    34.             cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);   
    35.             // 设置参数为output输出参数   
    36.             cmd.Parameters["@name"].Direction = ParameterDirection.Output;   
    37.   
    38.             // 执行存储过程   
    39.             cmd.ExecuteReader();   
    40.   
    41.             // 获取执行存储过程后的输出参数   
    42.             string name = cmd.Parameters["@name"].Value.ToString();   
    43.   
    44.             Response.Write(name);   
    45.         }   
    46.         catch (Exception ex)   
    47.         {   
    48.             Response.Write(ex.Message);   
    49.             if (conn.State == ConnectionState.Open)   
    50.             {   
    51.                 conn.Close();   
    52.             }   
    53.         }   
    54.         finally  
    55.         {   
    56.             if (conn.State == ConnectionState.Open)   
    57.             {   
    58.                 conn.Close();   
    59.             }   
    60.         }    
    61.     }   
    62. }  

    转载于:https://www.cnblogs.com/yssoft/archive/2009/05/30/1492348.html

    展开全文
  • --这里是树根节点 UNION ALL --定点成员和递归成员之间必须使用union all SELECT #t.ID,#t.ParentID FROM dbo.Categories #t INNER JOIN ChildCategories cc on #t.ParentID=cc.ID ) ...
  • 特别是选择Oracle做为数据库时,就更麻烦了,因为Oracle存储过程和SQLServer有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle情况下返回结果集,程序代码中怎么获取到那,请看下面几篇: ...
       项目开发过程中,不可避免的会用到存储过程返回结果集。特别是选择Oracle做为数据库时,就更麻烦了,因为Oracle存储过程和SQLServer的有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle的情况下返回结果集,程序代码中怎么获取到那,请看下面几篇:
    

           1.存储过程返回结果集

           2.Java中执行存储过程以及多结果集处理

           3.返回临时表中数据





    1. package com.zjhcsoft.test.utl;  
    2.   
    3. import java.sql.CallableStatement;  
    4. import java.sql.Connection;  
    5. import java.sql.DriverManager;  
    6. import java.sql.ResultSet;  
    7.   
    8. import oracle.jdbc.OracleCallableStatement;  
    9. import oracle.jdbc.driver.OracleTypes;  
    10.   
    11. public class TestOracleProc3 {  
    12.   
    13.     /** 
    14.      * @param args 
    15.      */  
    16.     public static void main(String[] args) {  
    17.         try {  
    18.             Class.forName("oracle.jdbc.driver.OracleDriver");  
    19.         } catch (Exception e) {  
    20.             e.printStackTrace();  
    21.         }  
    22.   
    23.         Connection conn = null;  
    24.         String DBurl = "jdbc:oracle:thin:@134.98.8.168:1521:ora817";  
    25.         try {  
    26.             conn = DriverManager.getConnection(DBurl, "sfz2""sfz2_123");  
    27.             System.out.println("Getting Connection...");  
    28.             conn.close();  
    29.         } catch (Exception e) {  
    30.             e.printStackTrace();  
    31.         }  
    32.           
    33.         try {  
    34.             conn = DriverManager.getConnection(DBurl, "sfz2""sfz2_123");  
    35.             long start = System.currentTimeMillis();  
    36.             //最关键一步  
    37.             conn.setAutoCommit(false);  
    38.             OracleCallableStatement cstmt = (OracleCallableStatement)conn.prepareCall("{call sfz_obj.proc_sfz_proc_test(?,?)}");  
    39.             cstmt.setString(1"");  
    40.             cstmt.registerOutParameter(2,OracleTypes.CURSOR);  
    41.             cstmt.execute();  
    42.             long end = System.currentTimeMillis();  
    43.             System.out.println("this procedure consumes "+((end-start)/1000)+" excute time.");  
    44.             start = System.currentTimeMillis();  
    45.             int i=0;  
    46.             ResultSet rs = (ResultSet)cstmt.getObject(2);  
    47.                while (rs.next()) {  
    48.                    System.out.println("column"+(i+1)+":"+rs.getString(1)+",  "+rs.getString(2)+",  "+rs.getString(3));  
    49.                    i++;  
    50.                }   
    51.                System.out.println("this procedure has "+(i-1)+" data.");  
    52.             end = System.currentTimeMillis();  
    53.             System.out.println("show this procedure data consumes "+((end-start)/1000)+" excute time.");  
    54.             conn.commit();  
    55.             cstmt.close();  
    56.             conn.close();  
    57.         } catch (Exception e) {  
    58.             e.printStackTrace();  
    59.         }  
    60.     }  
    61.   




    本文转自:http://blog.csdn.net/liangweiwei130/article/details/19539489

    展开全文
  • 系统开发过中,数据字典表的更新 你们是否发现,在系统开发过程中,你的数据库在不停的改变,最初发给每个开发人员的数据表定义,已经变得面目全非了,如果你这个这个项目开发的负责人,下面的人老师说,怎么数据表...
  • 点击上方SQL数据库开发,关注获取SQL视频教程SQL专栏SQL数据库基础知识汇总SQL数据库高级知识汇总作者:Woodytuhttps://www.cnblogs.com/woodytu/p/5280838.html1、SQL Server 最小存储单元...2、堆表和非堆表的本质...
  • 特别是选择Oracle做为数据库时,就更麻烦了,因为Oracle存储过程和SQLServer有点不太一样,直接返回不了结果集,那么怎么才能在使用Oracle情况下返回结果集,程序代码中怎么获取到那,请看下面几篇:1.存储过程...
  • 求大神怎么优化sql 贺存储过程呢? 代码如下: BEGIN #Routine body goes here... DECLARE personPlaneId BIGINT; DECLARE starttime datetime; #开始时间 DECLARE endtime datetime; #结束时间 ...
  • 向一个方法里传入一个对象,而该对象有各种属性,存储过程仅仅须要获取这个对象就能获取到各个參数,然后做出对应处理。有所不同是SQL的表类型是能够包括多条数据。到底是怎么一回事,且看以下样例。 ...
  • 采用utf8mb4编码好处是:存储获取数据时候,不用再考虑表情字符编码与解码问题。更改数据库编码为utf8mb4:1. MySQL版本utf8mb4最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。2. MySQL...
  • 我们可以避免在存储过程里定义一串参数,让人眼花缭乱,它就相当于面向对象语言里,向一个方法里传入一个对象,而该对象有各种属性,存储过程只需要获取这个对象就能获取到各个参数,然后做出相应处理。...
  • 先放代码,遇到问题是 调用mysql**有参**存储过程获取不到结果集 ``` #include #include #import "MSADO15.DLL" rename_namespace("ADOCG") rename("EOF","EndOfFile") using namespace ADOCG; ...
  • Mysql数据库中将表的数据迁移到另一个表怎么做? Mysql数据库中存储过程脚本结构? Mysql数据库中存储过程中的变量定义、赋值、改变? Mysql数据库中存储过程中的IF判断? Mysql数据库中存储过程中的LOOP循环? ...
  • 不能不佩服Red Gate的强大,旗下产品SQL Prompt 是我最喜欢的,SQL Doc生成... 很好奇SQL Doc是怎么获取数据库所有表的信息,比如数据库下的所以表名,表的字段信息,字段是否为空,关系,索引信息等,于是用Sq...
  • 我有一个问题如下: 表A: prjCode prjName ...我想获取表的所有prjCode,每个prjCode作为参数传入存储过程, 循环调用存储过程, 循环调用的语句的部分,sql怎么写? 用游标循环传参。 -----------
  • 视图视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表,怎么就得到了虚拟表,就是你查询的结果,只不过之前我们查询出来的虚拟表,从内存中取出来显示在屏幕上,内存中就没有了这些表的数据,...
  • 以下内容给大家介绍了MYSQL通过Adjacency List (邻接)来存储树形结构的过程介绍和解决办法,并把存储图例做了分析。 今天来看看一个比较头疼问题,如何在数据库中存储树形结构呢? 像mysql这样关系型...
  • 当数据库含有几万张表,又需要快速获取到某个表的DDL时,如果通过管理工具一行行的找就太不方便了;而且作为一个熟练的技术人员,没有几个小诀窍提高工作效率怎么行? 方法一:调用DM系统存储过程SP_TABLEDEF 定义...
  • 比如a,b ,c三张表,a表是b,c两表的综合不相同数据,现在要判断当b,c两表中新增数据后,a表也要获取两表不相同的新增的数据,a表已有的数据不再加,现在a和b,a和c有关联,b和c是没有关联的,求怎么存储过程?...
  • 摘要:最近项目中用到了存储过程,触发器,Function,由于以前没怎么用过,所以查资料,请教同事,最后总算是把问题解决了,问题是这样,数据库中有三张表一张是存放从远程服务器获取数据MBINMSGS,这个里面...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 146
精华内容 58
关键字:

怎么获取表的存储过程