返回首页

gbase数据、南大通用产品文档:GBase8srstoi() 函数

更新日期:2024年09月11日

rstoi() 函数将以空终止的字符串转换为 short integer 值。

语法

mint rstoi(string, ival)
char *string;
mint *ival;
string
指向以空终止的字符串的指针。
ival
指向保存转换了的值的 mint 值的指针。

用法
值的合法范围为 -32767 - 32767。值 -32768 不是有效的,因为此值为指示空的保留
值。

如果 string 对应于空整数,则 ival 指向 SMALLINT 空的表示。要转换对应于 long
integer 的字符串,请使用 rstol()。该操作的失败可导致错误的数据表示。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 901 -

返回代码
=0
转换成功。
!=0
转换失败。

示例

此样例程序在 demo 目录中的 rstoi.ec 文件中。
/*
* rstoi.ec *
The following program tries to convert three strings to integers. It displays the result of
each conversion.
*/

#include

EXEC SQL include sqltypes;

main()
{
mint err;
mint i;
short s;

printf("RSTOI Sample ESQL Program running.\n\n");

i = 0;
printf("Converting String 'abc':\n");
if((err = rstoi("abc", &i)) == 0)
printf("\tResult = %d\n\n", i);
else

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 902 -
printf("\tError %d in conversion of string #1\n\n", err);

i = 0;
printf("Converting String '32766':\n");
if((err = rstoi("32766", &i)) == 0)
printf("\tResult = %d\n\n", i);
else
printf("\tError %d in conversion of string #2\n\n", err);

i = 0;
printf("Converting String '':\n");
if((err = rstoi("", &i)) == 0)
{
s = i; /* assign to a SHORT variable */
if (risnull(CSHORTTYPE, (char *) &s))
/* and then test for NULL */
printf("\tResult = NULL\n\n");
else
printf("\tResult = %d\n\n", i);
}
else
printf("\tError %d in conversion of string #3\n\n", err);

printf("\nRSTOI Sample Program over.\n\n");
}
输出
RSTOI Sample ESQL Program running.

Converting String 'abc':
Error -1213 in conversion of string #1

Converting String '32766':
Result = 32766

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 903 -

Converting String '':
Result = NULL

RSTOI Sample Program over.


GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 212
-
在此示例中,使用客户端上的 Java™ 类 MyCircle 在数据库服务器中创建一个名
为 ACircle 的固定长度的不透明类型。ACircle 不透明类型使用数据库服务器提供的缺省支
持函数:
import java.sql.*;

public class MyCircle
{
String dbname = "test";
String url = null;
Connection conn = null;

public static void main (String args[])
{
new MyCircle(args);
}

MyCircle(String args[])
{
System.out.println("----------------");
System.out.println("- Start - Demo 3");
System.out.println("----------------");

// -----------
// Getting URL
// -----------
if (args.length == 0)
{
System.out.println("\n***ERROR: connection URL must be provided "
+
"in order to run the demo!");
return;
}
url = args[0];

// --------------
// Loading driver
// --------------

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 213
-
try
{
System.out.print("Loading JDBC driver...");
Class.forName("com.gbasedbt.jdbc.IfxDriver");
System.out.println("ok");
}
catch (java.lang.ClassNotFoundException e)
{
System.out.println("\n***ERROR: " + e.getMessage());
e.printStackTrace();
return;
}

// ------------------
// Getting connection
// ------------------
try
{
System.out.print("Getting connection...");
conn = DriverManager.getConnection(url);
System.out.println("ok");
}
catch (SQLException e)
{
System.out.println("URL = '" + url + "'");
System.out.println("\n***ERROR: " + e.getMessage());
e.printStackTrace();
return;
}
// -------------------
// Setup UDT meta data
// -------------------
UDTMetaData mdata = null;
try
{
mdata = new UDTMetaData();
System.out.print("Setting fields in mdata...");

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 214
-
mdata.setSQLName("acircle");
mdata.setLength(24);
mdata.setFieldCount(3);
mdata.setFieldName(1, "x");
mdata.setFieldName(2, "y");
mdata.setFieldName(3, "radius");
mdata.setFieldType(1, com.gbasedbt.lang.IfxTypes.IFX_TYPE_INT);
mdata.setFieldType(2, com.gbasedbt.lang.IfxTypes.IFX_TYPE_INT);
mdata.setFieldType(3, com.gbasedbt.lang.IfxTypes.IFX_TYPE_INT);
// set class name if don't want to use the default name
// .class
mdata.setClassName("ACircle");
mdata.setJarFileSQLName("ACircleJar");
mdata.keepJavaFile(true);
System.out.println("ok");
}
catch (SQLException e)
{
System.out.println("***ERROR: " + e.getMessage());
return;
}

// --------------------------------------------------------
// create java file for UDT and install UDT in the database
// --------------------------------------------------------
UDTManager udtmgr = null;
try
{
udtmgr = new UDTManager(conn);

System.out.println("Creating .class/.java files - " +
"createUDTClass()");
String classname = udtmgr.createUDTClass(mdata); // generated
//java file is kept
System.out.println(" classname = " + classname);

System.out.println("\nCreating .jar file - createJar()");

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 215
-
String jarfilename = udtmgr.createJar(mdata,
new String[]{"ACircle.class"}); // jarfilename is
// .jar
// ie. acircle.jar

System.out.println("\nsetJarTmpPath()");
udtmgr.setJarTmpPath("/tmp");

System.out.print("\ncreateUDT()...");
udtmgr.createUDT(mdata,
"/vobs/jdbc/demo/tools/udtudrmgr/" + jarfilename, "ACircle", 0);
System.out.println("ok");
}
catch (SQLException e)
{
System.out.println("\n***ERROR: " + e.getMessage());
return;
}
System.out.println();


// ---------------
// Now use the UDT
// ---------------
try
{
String s = "drop table tab";
System.out.print(s + "...");
Statement stmt = conn.createStatement();
int count = stmt.executeUpdate(s);
stmt.close();
System.out.println("ok");
}
catch ( SQLException e)
{
// -206 The specified table (%s) is not in the database.
if (e.getErrorCode() != -206)

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 216
-
{
System.out.println("\n***ERROR: " + e.getMessage());
return;
}
System.out.println("ok");
}

executeUpdate("create table tab (c acircle)");

// test DEFAULT Input function
executeUpdate("insert into tab values ('10 10 10')");

// test DEFAULT Output function
try
{
String s = "select c::lvarchar from tab";
System.out.println(s);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(s);
if (rs.next())
{
String c = rs.getString(1);
System.out.println(" acircle = '" + c + "'");
}
rs.close();
stmt.close();
}
catch (SQLException e)
{
System.out.println("***ERROR: " + e.getMessage());
}
System.out.println();

executeUpdate("drop table tab");

// ------------------
// Closing connection

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 217
-
// ------------------
try
{
System.out.print("Closing connection...");
conn.close();
System.out.println("ok");
}
catch (SQLException e)
{
System.out.println("\n***ERROR: " + e.getMessage());
}

System.out.println("------------------");
System.out.println("- End - UDT Demo 3");
System.out.println("------------------");

}

FOREACH 循环定义游标,指向一组中的一项的特定的=标识符,或为一组行,或为集合中
的元素。
FOREACH 循环声明并打开游标,
从数据库访存行,
处理该组中的每一项,
然后关闭游标。
如果 SELECT、EXECUTE PROCEDURE 或 EXECUTE FUNCTION 语句可能返回多行,
则您必须声明游标。在您声明游标之后,将 SELECT、EXECUTE PROCEDURE 或
EXECUTE FUNCTION 语句放置在其内。
返回一组行的 SPL 例程称为游标例程,
因为您必须使用游标来访问它返回的数据。
不返回
值、返回单个值或任何其他值的 SPL 例程不需要游标,称为无游标例程。FOREACH 循
环声明并打开游标,从数据库访存行或集合,处理该组中的每一项,然后关闭游标。如果
SELECT、
EXECUTE PROCEDURE 或 EXECUTE FUNCTION 语句可能返回多个行或集合,
则您必须声明游标。在您声明游标之后,请将 SELECT、EXECUTE PROCEDURE 或
EXECUTE FUNCTION 语句放置其内。
在 FOREACH 循环中,您可使用 EXECUTE FUNCTION 或 SELECT INTO 语句来执行
为迭代函数的外部函数。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 287 -