AutoInc SQL function

AutoInc is ILE/C SQL Function to auto increment an internal counter without using OPEN Cursor, FETCH.

You Can View User Feedback To This Tip

AutoInc is ILE/C SQL Function to auto increment an internal counter without using OPEN Cursor, FETCH, etc. By example: "INSERT INTO Tblt (ID, FLD1, FLD2) SELECT AutoInc(0), FldA, FldB FROM AnotherTBL" The function take an integer input parameter (the start value) and returns an integer value too.


   
/*
To compile use from command line:
CRTSRVPGM SRVPGM(QGPL/AUTOINC) EXPORT(*ALL) ACTGRP(*CALLER)

to register function use from strsql:
CREATE FUNCTION QGPL/AUTOINC(INTEGER)  
RETURNS INTEGER 
EXTERNAL NAME 'QGPL/AUTOINC(AUTOINC)'
LANGUAGE C
NO SQL  
PARAMETER STYLE SQL
DETERMINISTIC
ALLOW PARALLEL; 

*/
#include 
 
  

int   value=0;
int   last=0;

void AUTOINC( int* ValInt,
    int* ValRet,
    short* ind1,
    short* ind2,
    char* sqlstate,
    char* funcname,
    char* specname,
    char* msgtext )
{
     if( *ValInt != value ){
         last = *ValInt;
         value = *ValInt;
     }
     last++;
     *ValRet = last;
     *ind2=0; 
 

USER FEEDBACK TO THIS TIP

  • The source for the SQL User-defined function "AUTOINC" written in C is missing the last "}" at the end of the source.—Richard Walters

This was first published in June 2001

Dig deeper on RPG iSeries programming

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

-ADS BY GOOGLE

SearchEnterpriseLinux

SearchDataCenter

Close