我调用的存储过程

原创 2004年09月23日 10:39:00

存储过程
CREATE PROCEDURE CreateDJH
@tableName NVARCHAR(40), --指定你的表名
@columName NVARCHAR(50),--指定一个那一列是ID
@idFormate NVARCHAR(30),--单号的格式,如配件采购单为'CGD'
@latestID CHAR(16) OUTPUT --返回的值 ,也就是最后生成的ID

AS
    DECLARE @tempID AS NVARCHAR(16)
    DECLARE @sqlStr AS NVARCHAR(254)
    DECLARE @dateStr AS CHAR(8)
    DECLARE @tempdate AS CHAR(2)

--GET THE DATE STR

    SET  @tempdate=CAST(DATEPART(dd,GETDATE() ) AS CHAR(2))
    IF LEN(@tempdate)=1
 BEGIN
      SET @tempdate='0'+@tempdate
 END
   
    SET @dateStr=CAST(DATEPART(yy, GETDATE()) AS CHAR(4) )
                                     +SUBSTRING( DATENAME(mm, getdate()), 1, 3) +@tempdate
--GET THE LAST NO

    SET @sqlStr=N'SELECT TOP 1 @ID =  '+@columName+'  FROM ' +@tableName+' WHERE   '+@columName+'  LIKE    ltrim(rtrim(@likeStr))   ORDER BY  '+@columName+' DESC'
  
    DECLARE @templikeStr AS CHAR(14)
    SET @templikeStr='%'+@idFormate+ @dateStr+'%'
   
    EXECUTE sp_executesql @sqlStr,N' @likeStr CHAR(14) ,@ID CHAR(16)  OUTPUT', @templikeStr,@tempID OUTPUT --得到当前最后的一个ID号
  
  
--CREATE THE NO
    IF @tempID IS NULL
     BEGIN  --第一次插入
  SET @tempID=@idFormate+ @dateStr+'0001'
     END
    ELSE
     BEGIN
  DECLARE @tempLastForWord AS CHAR(4)
  DECLARE @tempCount AS INT
  DECLARE @tempLenth AS INT

  SET @tempLastForWord=RIGHT(@tempID,4)
  SET @tempCount=CAST(@tempLastForWord  AS INT)
  SET @tempCount=@tempCount+1
  SET @tempLastForWord=CAST(@tempCount  AS CHAR(4))
  SET @tempLenth=LEN(@tempLastForWord)

                           IF @tempLenth=1
   BEGIN
    SET @tempLastForWord='000'+@tempLastForWord
   END
  ELSE IF @tempLenth=2
   BEGIN
    SET @tempLastForWord='00'+@tempLastForWord
   END
  ELSE IF @tempLenth=3
   BEGIN
    SET @tempLastForWord='0'+@tempLastForWord
   END

  SET @tempID=@idFormate+ @dateStr+@tempLastForWord

  
                 END
     SELECT @latestID=@tempID
                 RETURN
GO

public static string getID(string tbName,string colName,string idName,SqlConnection conn)
  {
   //存储过程 取得单号
      

   SqlCommand cmdGetID=new SqlCommand();
   cmdGetID.CommandType=CommandType.StoredProcedure;
   cmdGetID.Connection=conn;
   cmdGetID.CommandText="CreateDJH";
  
   SqlParameter un=new SqlParameter();
   un.ParameterName="@tableName";
   un.Direction=ParameterDirection.Input;
   un.SourceVersion=DataRowVersion.Current;
   cmdGetID.Parameters.Add(un);
   cmdGetID.Parameters["@tableName"].Value=tbName;

   SqlParameter col=new SqlParameter();
   col.ParameterName="@columName";
   col.Direction=ParameterDirection.Input;
   col.SourceVersion=DataRowVersion.Current;
   cmdGetID.Parameters.Add(col);
   cmdGetID.Parameters["@columName"].Value=colName;

   SqlParameter idFormat=new SqlParameter();
   idFormat.ParameterName="@idFormate";
   idFormat.Direction=ParameterDirection.Input;
   idFormat.SourceVersion=DataRowVersion.Current;
   cmdGetID.Parameters.Add(idFormat);
   cmdGetID.Parameters["@idFormate"].Value=idName;
   
   //输出参数
   SqlParameter latestID=new SqlParameter();
   latestID=new SqlParameter("@latestID",SqlDbType.Char,15);
   latestID.Direction=ParameterDirection.Output;
   cmdGetID.Parameters.Add(latestID);
   cmdGetID.ExecuteNonQuery();   
   string RID=cmdGetID.Parameters["@latestID"].Value.ToString();   
   return RID; //返回单号
  }

在PL/SQL中调用存储过程--oracle

在oracle10中写好了存储过程,代码如下: CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2,...
  • wozengcong
  • wozengcong
  • 2013年12月07日 10:46
  • 23977

Mybatis调用MySQL存储过程

1.存储过程的简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户...
  • u010046908
  • u010046908
  • 2017年04月10日 11:40
  • 5522

调用存储过程

调用存储过程创建表CREATE TABLE `p_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAUL...
  • rocky_03
  • rocky_03
  • 2017年03月08日 11:59
  • 1897

C#调用存储过程的几个方法

/数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.         public static string connectionStrin...
  • liuyuehui110
  • liuyuehui110
  • 2017年03月30日 14:16
  • 875

C#中调用存储过程

1、没有参数没有返回值   2、有参数没有返回值  3、有参数有返回值     下面就这几种情况分别举例:1、没有参数没有返回值,象这种情况最简单。   存储过程   USE Nort...
  • ycl295644
  • ycl295644
  • 2015年05月05日 11:00
  • 5025

使用JDBC调用存储过程

存储过程,相当于数据库中的函数或方法。 现举例来说明使用JDBC调用存储过程。 编写存储过程(参看mysql文档) delimiter $$ 接收一个输入参数 create proc...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016年08月24日 22:00
  • 1867

mybatis调用存储过程

最近在研究mybatis调用存储过程,发表一下自己的学习心得 其中最好用的就是通过map传值,结果还用这个map接收,因为map是一个非常强大的东西,有时候存储过程要操作多张表, 比如说:往多张表插入...
  • QM972040417
  • QM972040417
  • 2015年09月14日 21:25
  • 1518

spring 调用存储过程

使用Spring JdbcTemplate调用存储过程 Spring的SimpleJdbcTemplate将存储过程的调用进行了良好的封装,但可惜只能用于jdk1.5的环境,无法再jdk1.4环境下...
  • u010787396
  • u010787396
  • 2015年08月25日 11:20
  • 2206

mysql存储过程详解以及PHP调用MYSQL存储过程实例

mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)...
  • u011871037
  • u011871037
  • 2016年05月31日 16:06
  • 6052

通过数据库存储过程调用Web服务的办法

Web服务概览   Web服务,从广义而言,就是在两个应用或电子设备之间通过万维网通信的方法。Web服务有两种类型:简单对象访问协议(SOAP)以及表述性状态转移(REST)。   SOAP为基于...
  • lc7404
  • lc7404
  • 2013年06月30日 23:02
  • 1319
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我调用的存储过程
举报原因:
原因补充:

(最多只允许输入30个字)