Name
aset — set array element
Synopsis
aset
(
|
in arg any , |
in nth integer , | |
in
new_elem
any
) ; |
Description
aset sets the nth element of a string, array or vector where nth is a zero-based index. If the first argument is a string, the nth character of string is replaced with the ASCII value given in the third argument elem.
Parameters
arg
A string, array or vector.
nth
Zero-based element index.
nelem
The new element. If
arg
is a string,
its nth element will be replaced by the ASCII value given in
new_elem
.
Return Values
Aset
returns
nelem
. It modifies its first argument.
Errors
Table 24.4. Errors signalled by aset
SQLState | Error Code | Error Text | Description |
---|---|---|---|
22003 | SR020 | Bad array subscript %d in aset. |
Examples
Example 24.15. Using
make_string
and
aref
Make a string, fill with character sequence from A to Z.
SQL> create procedure alphabet_string () { declare _inx integer; declare _str varchar; _str := make_string (26); while (_inx < 26) { aset (_str, _inx, _inx + 65); _inx := _inx + 1; } return (_str); } ; Done. -- 6 msec. SQL> select alphabet_string (); callret VARCHAR NOT NULL _______________________________________________________________________________ ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 Rows. -- 4 msec.
Example 24.16. Reverse a string using aset
Note that str is modified by aset.
SQL> create procedure revstr (in str varchar) { declare len, inx1, inx2, tmp integer; if (str is null) return (str); len := length (str); if (len < 2) return (str); -- No need for further processing inx1 := 0; -- Index from the left. inx2 := len - 1; -- Index from the right. len := len / 2; -- Upper limit for inx1. while (inx1 < len) { tmp := aref (str, inx1); aset (str, inx1, aref (str, inx2)); aset (str, inx2, tmp); inx1 := inx1 + 1; inx2 := inx2 - 1; } return (str); } ; Done. -- 7 msec. SQL> select revstr ('repaid'), revstr ('Alli, tapa pulu papatilla!'); callret callret VARCHAR VARCHAR _______________________________________________________________________________ diaper !allitapap ulup apat ,illA 1 Rows. -- 11 msec.