public void SimpleCursorForLoop() { var query = (SqlQueryExpression) SqlExpression.Parse("SELECT * FROM table1"); var block = new PlSqlBlockStatement(); block.Declarations.Add(new DeclareCursorStatement("c1", query)); var loop = new CursorForLoopStatement("i", "c1"); loop.Statements.Add(new DeclareVariableStatement("a", PrimitiveTypes.String())); loop.Statements.Add(new AssignVariableStatement(SqlExpression.VariableReference("a"), SqlExpression.FunctionCall("cast", new SqlExpression[] { SqlExpression.VariableReference("i"), SqlExpression.Constant("varchar") }))); loop.Statements.Add( new ConditionStatement(SqlExpression.Equal(SqlExpression.VariableReference("i"), SqlExpression.Constant(50)), new SqlStatement[] { new ReturnStatement(SqlExpression.VariableReference("a")) })); block.Statements.Add(new OpenStatement("c1")); block.Statements.Add(loop); var result = AdminQuery.ExecuteStatement(block); Assert.IsNotNull(result); Assert.AreEqual(StatementResultType.Result, result.Type); var value = result.Result.GetValue(0, 0); Assert.IsNotNull(value); Assert.IsFalse(Field.IsNullField(value)); }
protected virtual SqlStatement VisitCursorForLoop(CursorForLoopStatement statement) { var loop = new CursorForLoopStatement(statement.IndexName, statement.CursorName); foreach (var child in statement.Statements) { loop.Statements.Add(VisitStatement(child)); } return(loop); }
protected virtual SqlStatement VisitCursorForLoop(CursorForLoopStatement statement) { var loop = new CursorForLoopStatement(statement.IndexName, statement.CursorName); foreach (var child in statement.Statements) { loop.Statements.Add(VisitStatement(child)); } return loop; }