我想做的是从函数返回结果,因此函数可以按以下方式使用:
select * from stuff(1)
简化函数示例:
FUNCTION stuff(p_var number) RETURN SYS_REFCURSOR
IS
CURSOR cur(cp_var number) IS
SELECT * FROM dual ;
BEGIN
OPEN cur(p_var);
RETURN cur;
END stuff;
Run Code Online (Sandbox Code Playgroud)
但这不能编译:
Error: PLS-00382: expression is of wrong type
是否可以从这样定义的函数返回光标/结果?
Kotlin 允许对表达式进行注释。然而,尚不清楚这些注释如何有用以及如何使用它们。
假设在下面的示例中我想检查该字符串包含 @MyExpr 注释中指定的数字。这可以实现吗?如何实现?
@Target(AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
annotation class MyExpr(val i: Int) {}
fun someFn() {
val a = @MyExpr(1) "value#1";
val b = @MyExpr(2) "value#2";
}
Run Code Online (Sandbox Code Playgroud) 试图将powBigInteger类中的函数作为具有相同名称的中缀函数提供.
问题是现在中pow缀运算符递归调用自身.
是否可以使用与函数同名的中缀运算符使Java函数可调用?
package experiments
import java.math.BigInteger
infix fun BigInteger.pow(x: BigInteger): BigInteger {
return this.pow(x);
}
fun main(args : Array<String>) {
val a = BigInteger("2");
val b = BigInteger("3");
println(a + b)
println(a pow b)
}
Run Code Online (Sandbox Code Playgroud)
原因:
Exception in thread "main" java.lang.StackOverflowError
at kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull(Intrinsics.java:126)
at experiments.KotlinTestKt.pow(KotlinTest.kt)
at experiments.KotlinTestKt.pow(KotlinTest.kt:6)
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取用户的全名.不是登录名,而是显示在Windows 7开始菜单右上角的全名.它可能仅在活动目录设置中显示为全名.
os.environ['USERNAME']
win32api.GetUserName()
Run Code Online (Sandbox Code Playgroud)
这两个都返回登录名.如何获取用户的全名?