(1)通过存储过程方式生成(以Oracle为例)
Create Or Replace Procedure MyProcedure
{
CV_1 OUT NVARCHAR2
}
AS
BEGIN
DECLARE
V_CURRENTCODE NVARCHAR2(100)
BEGIN
SELECT MAX([编码字段名]) INTO V_CURRENTCODE FROM [表名];
IF substr(V_CURRENTCODE,8) = to_char(sysdate,'yyyymmdd') THEN
SELECT
CAST(
CAST(nvl(Max(substr([编码字段名] , 0 ,8)),0) AS nvarchar2(30)) || CAST(nvl(Max(substr([编码字段名] , 9 ,4)),0) AS nvarchar2(30))
AS INT)+1
AS [编码字段名]
INTO CV_1
FROM [表名]
dbms_output.put_line(CV_1);
ELSE
SELECT DISTINCT(to_char(sysdate,'yyyymmdd')|| '0001') as [编码字段名] into CV_1 from dual ;
dbms_output.put_line(CV_1);
END IF;
END;
至于调用存储过程我这里就不举例子了,微软有专门提供访问数据层中存在调用 ”存储过程“的方法。
(2)通过程序代码方式生成
///
/// 生成流水号