ruby-plsql 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/ruby_plsql.rb CHANGED
@@ -2,7 +2,7 @@ require "time"
2
2
  require "date"
3
3
  require "bigdecimal"
4
4
 
5
- %w(connection sql_statements schema procedure procedure_call package table sequence).each do |file|
5
+ %w(connection sql_statements schema procedure procedure_call package variable table view sequence type version helpers).each do |file|
6
6
  require "plsql/#{file}"
7
7
  end
8
8
 
@@ -6,42 +6,46 @@ describe "Connection" do
6
6
 
7
7
  before(:all) do
8
8
  @raw_conn = get_connection
9
+ @conn = PLSQL::Connection.create( @raw_conn )
9
10
  end
10
11
 
11
12
  after(:all) do
12
- unless defined?(JRUBY_VERSION)
13
+ unless defined?(JRuby)
13
14
  @raw_conn.logoff rescue nil
14
15
  else
15
16
  @raw_conn.close rescue nil
16
17
  end
17
18
  end
18
19
 
19
- before(:each) do
20
- @conn = PLSQL::Connection.create( @raw_conn )
21
- end
20
+ describe "create and destroy" do
21
+ before(:each) do
22
+ @conn = PLSQL::Connection.create( @raw_conn )
23
+ end
22
24
 
23
- it "should create connection" do
24
- @conn.raw_connection.should == @raw_conn
25
- end
25
+ it "should create connection" do
26
+ @conn.raw_connection.should == @raw_conn
27
+ end
26
28
 
27
- unless defined?(JRUBY_VERSION)
28
- it "should be oci connection" do
29
- @conn.should be_oci
30
- @conn.raw_driver.should == :oci
29
+ unless defined?(JRuby)
30
+ it "should be oci connection" do
31
+ @conn.should be_oci
32
+ @conn.raw_driver.should == :oci
33
+ end
34
+ else
35
+ it "should be jdbc connection" do
36
+ @conn.should be_jdbc
37
+ @conn.raw_driver.should == :jdbc
38
+ end
31
39
  end
32
- else
33
- it "should be jdbc connection" do
34
- @conn.should be_jdbc
35
- @conn.raw_driver.should == :jdbc
40
+
41
+ it "should logoff connection" do
42
+ @conn.logoff.should be_true
36
43
  end
44
+
37
45
  end
38
-
39
- it "should logoff connection" do
40
- @conn.logoff.should be_true
41
- end
42
-
46
+
43
47
  # Ruby 1.8 and 1.9
44
- if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby'
48
+ unless defined?(JRuby)
45
49
  describe "OCI data type conversions" do
46
50
  it "should translate PL/SQL VARCHAR2 to Ruby String" do
47
51
  @conn.plsql_to_ruby_data_type(:data_type => "VARCHAR2", :data_length => 100).should == [String, 100]
@@ -110,8 +114,9 @@ describe "Connection" do
110
114
 
111
115
  end
112
116
 
113
- elsif RUBY_ENGINE == 'jruby'
114
-
117
+ # JRuby
118
+ else
119
+
115
120
  describe "JDBC data type conversions" do
116
121
  it "should translate PL/SQL VARCHAR2 to Ruby String" do
117
122
  @conn.plsql_to_ruby_data_type(:data_type => "VARCHAR2", :data_length => 100).should == [String, 100]
@@ -123,7 +128,7 @@ describe "Connection" do
123
128
  end
124
129
 
125
130
  it "should translate PL/SQL DATE to Ruby DateTime" do
126
- @conn.plsql_to_ruby_data_type(:data_type => "DATE", :data_length => nil).should == [Time, nil]
131
+ @conn.plsql_to_ruby_data_type(:data_type => "DATE", :data_length => nil).should == [DateTime, nil]
127
132
  end
128
133
 
129
134
  it "should translate PL/SQL TIMESTAMP to Ruby Time" do
@@ -138,12 +143,7 @@ describe "Connection" do
138
143
  big_decimal = @conn.ruby_value_to_ora_value(12345678901234567890, BigDecimal)
139
144
  big_decimal.should == java.math.BigDecimal.new("12345678901234567890")
140
145
  end
141
-
142
- # it "should translate Ruby OraDate value to DateTime when DateTime type specified" do
143
- # now = OraDate.now
144
- # @conn.ruby_value_to_ora_value(now, DateTime).should eql(now.to_datetime)
145
- # end
146
-
146
+
147
147
  it "should translate Ruby String value to Java::OracleSql::CLOB when Java::OracleSql::CLOB type specified" do
148
148
  large_text = "x" * 100_000
149
149
  ora_value = @conn.ruby_value_to_ora_value(large_text, Java::OracleSql::CLOB)
@@ -166,11 +166,6 @@ describe "Connection" do
166
166
  it "should translate Oracle BigDecimal float value to BigDecimal" do
167
167
  @conn.ora_value_to_ruby_value(BigDecimal("100.11")).should eql(BigDecimal("100.11"))
168
168
  end
169
-
170
- # it "should translate Oracle OraDate value to Time" do
171
- # now = OraDate.now
172
- # @conn.ora_value_to_ruby_value(now).should eql(now.to_time)
173
- # end
174
169
 
175
170
  it "should translate Oracle CLOB value to String" do
176
171
  large_text = "āčē" * 100_000
@@ -185,8 +180,8 @@ describe "Connection" do
185
180
  end
186
181
 
187
182
  end
188
-
189
- end
183
+
184
+ end
190
185
 
191
186
  describe "SQL SELECT statements" do
192
187
 
@@ -218,7 +213,7 @@ describe "Connection" do
218
213
  FROM dual").should == [nil,123,123.456,@now]
219
214
  end
220
215
 
221
- if defined?(JRUBY_VERSION)
216
+ if defined?(JRuby)
222
217
 
223
218
  it "should execute SQL statement with NULL values as bind parameters and return first result" do
224
219
  @today = Date.parse("2008-05-31")
@@ -278,30 +273,30 @@ describe "Connection" do
278
273
  end
279
274
 
280
275
  describe "PL/SQL procedures" do
281
- before(:each) do
276
+ before(:all) do
282
277
  @random = rand(1000)
283
278
  @now = Time.local(2008,05,31,23,22,11)
284
- sql = <<-EOS
279
+ sql = <<-SQL
285
280
  CREATE OR REPLACE FUNCTION test_add_random (p_number NUMBER, p_varchar IN OUT VARCHAR2, p_date IN OUT DATE)
286
281
  RETURN NUMBER
287
282
  IS
288
283
  BEGIN
289
284
  RETURN p_number + #{@random};
290
285
  END test_add_random;
291
- EOS
286
+ SQL
292
287
  @conn.exec(sql).should be_true
293
288
  end
294
289
 
295
- after(:each) do
290
+ after(:all) do
296
291
  @conn.exec "DROP FUNCTION test_add_random"
297
292
  end
298
293
 
299
294
  it "should parse PL/SQL procedure call and bind parameters and exec and get bind parameter value" do
300
- sql = <<-EOS
295
+ sql = <<-SQL
301
296
  BEGIN
302
297
  :result := test_add_random (:p_number, :p_varchar, :p_date);
303
298
  END;
304
- EOS
299
+ SQL
305
300
  cursor = @conn.parse(sql)
306
301
  cursor.bind_param(":result", nil, :data_type => 'NUMBER', :in_out => 'OUT')
307
302
  cursor.bind_param(":p_number", 100, :data_type => 'NUMBER', :in_out => 'IN')
@@ -317,17 +312,21 @@ describe "Connection" do
317
312
  end
318
313
 
319
314
  describe "commit and rollback" do
320
- before(:each) do
321
- sql = "CREATE TABLE test_commit (dummy VARCHAR2(100))"
322
- @conn.exec(sql).should be_true
315
+ before(:all) do
316
+ @conn.exec("CREATE TABLE test_commit (dummy VARCHAR2(100))").should be_true
323
317
  @conn.autocommit = false
324
318
  @conn.should_not be_autocommit
325
319
  end
320
+
321
+ after(:all) do
322
+ @conn.exec "DROP TABLE test_commit"
323
+ end
324
+
326
325
  after(:each) do
327
- sql = "DROP TABLE test_commit"
328
- @conn.exec(sql).should be_true
326
+ @conn.exec "DELETE FROM test_commit"
327
+ @conn.commit
329
328
  end
330
-
329
+
331
330
  it "should do commit" do
332
331
  @conn.exec("INSERT INTO test_commit VALUES ('test')")
333
332
  @conn.commit
@@ -349,4 +348,67 @@ describe "Connection" do
349
348
 
350
349
  end
351
350
 
351
+ describe "prefetch rows" do
352
+ after(:each) do
353
+ @conn.prefetch_rows = 1 # set back to default
354
+ end
355
+
356
+ it "should set prefetch rows for connection" do
357
+ sql = "SELECT 1 FROM dual UNION ALL SELECT 1/0 FROM dual"
358
+ @conn.prefetch_rows = 2
359
+ lambda {
360
+ @conn.cursor_from_query(sql)
361
+ }.should raise_error(/divisor is equal to zero/)
362
+ @conn.prefetch_rows = 1
363
+ lambda {
364
+ @conn.cursor_from_query(sql)
365
+ }.should_not raise_error
366
+ end
367
+
368
+ it "should fetch just one row when using select_first" do
369
+ sql = "SELECT 1 FROM dual UNION ALL SELECT 1/0 FROM dual"
370
+ @conn.prefetch_rows = 2
371
+ lambda {
372
+ @conn.select_first(sql)
373
+ }.should_not raise_error
374
+ end
375
+
376
+ end
377
+
378
+ describe "describe synonym" do
379
+ before(:all) do
380
+ @conn.exec "CREATE SYNONYM hr.synonym_for_dual FOR sys.dual"
381
+ end
382
+
383
+ after(:all) do
384
+ @conn.exec "DROP SYNONYM hr.synonym_for_dual"
385
+ end
386
+
387
+ it "should describe local synonym" do
388
+ @conn.describe_synonym('HR','SYNONYM_FOR_DUAL').should == ['SYS', 'DUAL']
389
+ @conn.describe_synonym('hr','synonym_for_dual').should == ['SYS', 'DUAL']
390
+ @conn.describe_synonym(:hr,:synonym_for_dual).should == ['SYS', 'DUAL']
391
+ end
392
+
393
+ it "should return nil on non-existing synonym" do
394
+ @conn.describe_synonym('HR','SYNONYM_FOR_XXX').should be_nil
395
+ @conn.describe_synonym('hr','synonym_for_xxx').should be_nil
396
+ @conn.describe_synonym(:hr,:synonym_for_xxx).should be_nil
397
+ end
398
+
399
+ it "should describe public synonym" do
400
+ @conn.describe_synonym('PUBLIC','DUAL').should == ['SYS', 'DUAL']
401
+ @conn.describe_synonym('PUBLIC','dual').should == ['SYS', 'DUAL']
402
+ @conn.describe_synonym('PUBLIC',:dual).should == ['SYS', 'DUAL']
403
+ end
404
+
405
+ end
406
+
407
+ describe "database version" do
408
+ it "should get database version" do
409
+ # using Oracle version 10.2.0.4 for unit tests
410
+ @conn.database_version.should == [10, 2]
411
+ end
412
+ end
413
+
352
414
  end
@@ -3,13 +3,14 @@ require File.dirname(__FILE__) + '/../spec_helper'
3
3
  describe "Package" do
4
4
  before(:all) do
5
5
  plsql.connection = get_connection
6
- plsql.connection.exec <<-EOS
6
+ plsql.execute <<-SQL
7
7
  CREATE OR REPLACE PACKAGE test_package IS
8
+ test_variable NUMBER;
8
9
  FUNCTION test_procedure ( p_string VARCHAR2 )
9
10
  RETURN VARCHAR2;
10
11
  END;
11
- EOS
12
- plsql.connection.exec <<-EOS
12
+ SQL
13
+ plsql.execute <<-SQL
13
14
  CREATE OR REPLACE PACKAGE BODY test_package IS
14
15
  FUNCTION test_procedure ( p_string VARCHAR2 )
15
16
  RETURN VARCHAR2
@@ -18,11 +19,12 @@ describe "Package" do
18
19
  RETURN UPPER(p_string);
19
20
  END test_procedure;
20
21
  END;
21
- EOS
22
+ SQL
22
23
 
23
24
  end
24
25
 
25
26
  after(:all) do
27
+ plsql.execute "DROP PACKAGE test_package"
26
28
  plsql.logoff
27
29
  end
28
30
 
@@ -45,19 +47,26 @@ describe "Package" do
45
47
  plsql.test_package.test_procedure('xxx').should == 'XXX'
46
48
  end
47
49
 
50
+ describe "variables" do
51
+ it "should set and get package variable value" do
52
+ plsql.test_package.test_variable = 1
53
+ plsql.test_package.test_variable.should == 1
54
+ end
55
+ end
56
+
48
57
  end
49
58
 
50
59
  describe "Synonym to package" do
51
60
 
52
61
  before(:all) do
53
62
  plsql.connection = get_connection
54
- plsql.connection.exec <<-EOS
63
+ plsql.execute <<-SQL
55
64
  CREATE OR REPLACE PACKAGE hr.test_package IS
56
65
  FUNCTION test_procedure ( p_string VARCHAR2 )
57
66
  RETURN VARCHAR2;
58
67
  END;
59
- EOS
60
- plsql.connection.exec <<-EOS
68
+ SQL
69
+ plsql.execute <<-SQL
61
70
  CREATE OR REPLACE PACKAGE BODY hr.test_package IS
62
71
  FUNCTION test_procedure ( p_string VARCHAR2 )
63
72
  RETURN VARCHAR2
@@ -66,12 +75,12 @@ describe "Synonym to package" do
66
75
  RETURN UPPER(p_string);
67
76
  END test_procedure;
68
77
  END;
69
- EOS
70
- plsql.connection.exec "CREATE SYNONYM test_pkg_synonym FOR hr.test_package"
78
+ SQL
79
+ plsql.execute "CREATE SYNONYM test_pkg_synonym FOR hr.test_package"
71
80
  end
72
81
 
73
82
  after(:all) do
74
- plsql.connection.exec "DROP SYNONYM test_pkg_synonym" rescue nil
83
+ plsql.execute "DROP SYNONYM test_pkg_synonym" rescue nil
75
84
  plsql.logoff
76
85
  end
77
86
 
@@ -14,7 +14,7 @@ describe "Parameter type mapping /" do
14
14
  describe "Function with string parameters" do
15
15
 
16
16
  before(:all) do
17
- plsql.connection.exec <<-EOS
17
+ plsql.execute <<-SQL
18
18
  CREATE OR REPLACE FUNCTION test_uppercase
19
19
  ( p_string VARCHAR2 )
20
20
  RETURN VARCHAR2
@@ -22,11 +22,11 @@ describe "Parameter type mapping /" do
22
22
  BEGIN
23
23
  RETURN UPPER(p_string);
24
24
  END test_uppercase;
25
- EOS
25
+ SQL
26
26
  end
27
27
 
28
28
  after(:all) do
29
- plsql.connection.exec "DROP FUNCTION test_uppercase"
29
+ plsql.execute "DROP FUNCTION test_uppercase"
30
30
  end
31
31
 
32
32
  it "should find existing procedure" do
@@ -66,7 +66,7 @@ describe "Parameter type mapping /" do
66
66
  describe "Function with numeric parameters" do
67
67
 
68
68
  before(:all) do
69
- plsql.connection.exec <<-SQL
69
+ plsql.execute <<-SQL
70
70
  CREATE OR REPLACE FUNCTION test_sum
71
71
  ( p_num1 NUMBER, p_num2 NUMBER )
72
72
  RETURN NUMBER
@@ -75,7 +75,7 @@ describe "Parameter type mapping /" do
75
75
  RETURN p_num1 + p_num2;
76
76
  END test_sum;
77
77
  SQL
78
- plsql.connection.exec <<-SQL
78
+ plsql.execute <<-SQL
79
79
  CREATE OR REPLACE FUNCTION test_number_1
80
80
  ( p_num NUMBER )
81
81
  RETURN VARCHAR2
@@ -92,11 +92,21 @@ describe "Parameter type mapping /" do
92
92
  END IF;
93
93
  END test_number_1;
94
94
  SQL
95
+ plsql.execute <<-SQL
96
+ CREATE OR REPLACE PROCEDURE test_integers
97
+ ( p_pls_int PLS_INTEGER, p_bin_int BINARY_INTEGER, x_pls_int OUT PLS_INTEGER, x_bin_int OUT BINARY_INTEGER )
98
+ IS
99
+ BEGIN
100
+ x_pls_int := p_pls_int;
101
+ x_bin_int := p_bin_int;
102
+ END;
103
+ SQL
95
104
  end
96
105
 
97
106
  after(:all) do
98
- plsql.connection.exec "DROP FUNCTION test_sum"
99
- plsql.connection.exec "DROP FUNCTION test_number_1"
107
+ plsql.execute "DROP FUNCTION test_sum"
108
+ plsql.execute "DROP FUNCTION test_number_1"
109
+ plsql.execute "DROP PROCEDURE test_integers"
100
110
  end
101
111
 
102
112
  it "should process integer parameters" do
@@ -127,12 +137,15 @@ describe "Parameter type mapping /" do
127
137
  plsql.test_number_1(false).should == 'N'
128
138
  end
129
139
 
140
+ it "should process binary integer parameters" do
141
+ plsql.test_integers(123, 456).should == {:x_pls_int => 123, :x_bin_int => 456}
142
+ end
130
143
  end
131
144
 
132
145
  describe "Function with date parameters" do
133
146
 
134
147
  before(:all) do
135
- plsql.connection.exec <<-EOS
148
+ plsql.execute <<-SQL
136
149
  CREATE OR REPLACE FUNCTION test_date
137
150
  ( p_date DATE )
138
151
  RETURN DATE
@@ -140,7 +153,7 @@ describe "Parameter type mapping /" do
140
153
  BEGIN
141
154
  RETURN p_date + 1;
142
155
  END test_date;
143
- EOS
156
+ SQL
144
157
  end
145
158
 
146
159
  before(:each) do
@@ -148,7 +161,7 @@ describe "Parameter type mapping /" do
148
161
  end
149
162
 
150
163
  after(:all) do
151
- plsql.connection.exec "DROP FUNCTION test_date"
164
+ plsql.execute "DROP FUNCTION test_date"
152
165
  end
153
166
 
154
167
  it "should process Time parameters" do
@@ -199,7 +212,7 @@ describe "Parameter type mapping /" do
199
212
  describe "Function with timestamp parameters" do
200
213
 
201
214
  before(:all) do
202
- plsql.connection.exec <<-EOS
215
+ plsql.execute <<-SQL
203
216
  CREATE OR REPLACE FUNCTION test_timestamp
204
217
  ( p_time TIMESTAMP )
205
218
  RETURN TIMESTAMP
@@ -207,11 +220,11 @@ describe "Parameter type mapping /" do
207
220
  BEGIN
208
221
  RETURN p_time + NUMTODSINTERVAL(1, 'DAY');
209
222
  END test_timestamp;
210
- EOS
223
+ SQL
211
224
  end
212
225
 
213
226
  after(:all) do
214
- plsql.connection.exec "DROP FUNCTION test_timestamp"
227
+ plsql.execute "DROP FUNCTION test_timestamp"
215
228
  end
216
229
 
217
230
  it "should process timestamp parameters" do
@@ -224,7 +237,7 @@ describe "Parameter type mapping /" do
224
237
 
225
238
  describe "Procedure with output parameters" do
226
239
  before(:all) do
227
- plsql.connection.exec <<-EOS
240
+ plsql.execute <<-SQL
228
241
  CREATE OR REPLACE PROCEDURE test_copy
229
242
  ( p_from VARCHAR2, p_to OUT VARCHAR2, p_to_double OUT VARCHAR2 )
230
243
  IS
@@ -232,11 +245,11 @@ describe "Parameter type mapping /" do
232
245
  p_to := p_from;
233
246
  p_to_double := p_from || p_from;
234
247
  END test_copy;
235
- EOS
248
+ SQL
236
249
  end
237
250
 
238
251
  after(:all) do
239
- plsql.connection.exec "DROP PROCEDURE test_copy"
252
+ plsql.execute "DROP PROCEDURE test_copy"
240
253
  end
241
254
 
242
255
  it "should return hash with output parameters" do
@@ -259,7 +272,7 @@ describe "Parameter type mapping /" do
259
272
 
260
273
  describe "Package with procedures with same name but different argument lists" do
261
274
  before(:all) do
262
- plsql.connection.exec <<-EOS
275
+ plsql.execute <<-SQL
263
276
  CREATE OR REPLACE PACKAGE test_package2 IS
264
277
  FUNCTION test_procedure ( p_string VARCHAR2 )
265
278
  RETURN VARCHAR2;
@@ -270,8 +283,8 @@ describe "Parameter type mapping /" do
270
283
  FUNCTION test_procedure2 ( p_string VARCHAR2 )
271
284
  RETURN VARCHAR2;
272
285
  END;
273
- EOS
274
- plsql.connection.exec <<-EOS
286
+ SQL
287
+ plsql.execute <<-SQL
275
288
  CREATE OR REPLACE PACKAGE BODY test_package2 IS
276
289
  FUNCTION test_procedure ( p_string VARCHAR2 )
277
290
  RETURN VARCHAR2
@@ -296,12 +309,12 @@ describe "Parameter type mapping /" do
296
309
  RETURN UPPER(p_string);
297
310
  END test_procedure2;
298
311
  END;
299
- EOS
312
+ SQL
300
313
 
301
314
  end
302
315
 
303
316
  after(:all) do
304
- plsql.connection.exec "DROP PACKAGE test_package2"
317
+ plsql.execute "DROP PACKAGE test_package2"
305
318
  end
306
319
 
307
320
  it "should find existing package" do
@@ -347,7 +360,7 @@ describe "Parameter type mapping /" do
347
360
 
348
361
  describe "Function with output parameters" do
349
362
  before(:all) do
350
- plsql.connection.exec <<-EOS
363
+ plsql.execute <<-SQL
351
364
  CREATE OR REPLACE FUNCTION test_copy_function
352
365
  ( p_from VARCHAR2, p_to OUT VARCHAR2, p_to_double OUT VARCHAR2 )
353
366
  RETURN NUMBER
@@ -357,11 +370,11 @@ describe "Parameter type mapping /" do
357
370
  p_to_double := p_from || p_from;
358
371
  RETURN LENGTH(p_from);
359
372
  END test_copy_function;
360
- EOS
373
+ SQL
361
374
  end
362
375
 
363
376
  after(:all) do
364
- plsql.connection.exec "DROP FUNCTION test_copy_function"
377
+ plsql.execute "DROP FUNCTION test_copy_function"
365
378
  end
366
379
 
367
380
  it "should return array with return value and hash of output parameters" do
@@ -381,26 +394,26 @@ describe "Parameter type mapping /" do
381
394
 
382
395
  describe "Function or procedure without parameters" do
383
396
  before(:all) do
384
- plsql.connection.exec <<-EOS
397
+ plsql.execute <<-SQL
385
398
  CREATE OR REPLACE FUNCTION test_no_params
386
399
  RETURN VARCHAR2
387
400
  IS
388
401
  BEGIN
389
402
  RETURN 'dummy';
390
403
  END test_no_params;
391
- EOS
392
- plsql.connection.exec <<-EOS
404
+ SQL
405
+ plsql.execute <<-SQL
393
406
  CREATE OR REPLACE PROCEDURE test_proc_no_params
394
407
  IS
395
408
  BEGIN
396
409
  NULL;
397
410
  END test_proc_no_params;
398
- EOS
411
+ SQL
399
412
  end
400
413
 
401
414
  after(:all) do
402
- plsql.connection.exec "DROP FUNCTION test_no_params"
403
- plsql.connection.exec "DROP PROCEDURE test_proc_no_params"
415
+ plsql.execute "DROP FUNCTION test_no_params"
416
+ plsql.execute "DROP PROCEDURE test_proc_no_params"
404
417
  end
405
418
 
406
419
  it "should find function" do
@@ -424,7 +437,7 @@ describe "Parameter type mapping /" do
424
437
  describe "Function with CLOB parameter and return value" do
425
438
 
426
439
  before(:all) do
427
- plsql.connection.exec <<-EOS
440
+ plsql.execute <<-SQL
428
441
  CREATE OR REPLACE FUNCTION test_clob
429
442
  ( p_clob CLOB )
430
443
  RETURN CLOB
@@ -432,11 +445,11 @@ describe "Parameter type mapping /" do
432
445
  BEGIN
433
446
  RETURN p_clob;
434
447
  END test_clob;
435
- EOS
448
+ SQL
436
449
  end
437
450
 
438
451
  after(:all) do
439
- plsql.connection.exec "DROP FUNCTION test_clob"
452
+ plsql.execute "DROP FUNCTION test_clob"
440
453
  end
441
454
 
442
455
  it "should find existing procedure" do
@@ -473,7 +486,7 @@ describe "Parameter type mapping /" do
473
486
  describe "Procedrue with CLOB parameter and return value" do
474
487
 
475
488
  before(:all) do
476
- plsql.connection.exec <<-EOS
489
+ plsql.execute <<-SQL
477
490
  CREATE OR REPLACE PROCEDURE test_clob_proc
478
491
  ( p_clob CLOB,
479
492
  p_return OUT CLOB)
@@ -481,11 +494,11 @@ describe "Parameter type mapping /" do
481
494
  BEGIN
482
495
  p_return := p_clob;
483
496
  END test_clob_proc;
484
- EOS
497
+ SQL
485
498
  end
486
499
 
487
500
  after(:all) do
488
- plsql.connection.exec "DROP PROCEDURE test_clob_proc"
501
+ plsql.execute "DROP PROCEDURE test_clob_proc"
489
502
  end
490
503
 
491
504
  it "should find existing procedure" do
@@ -501,7 +514,7 @@ describe "Parameter type mapping /" do
501
514
  describe "Procedrue with BLOB parameter and return value" do
502
515
 
503
516
  before(:all) do
504
- plsql.connection.exec <<-EOS
517
+ plsql.execute <<-SQL
505
518
  CREATE OR REPLACE PROCEDURE test_blob_proc
506
519
  ( p_blob BLOB,
507
520
  p_return OUT BLOB)
@@ -509,11 +522,11 @@ describe "Parameter type mapping /" do
509
522
  BEGIN
510
523
  p_return := p_blob;
511
524
  END test_blob_proc;
512
- EOS
525
+ SQL
513
526
  end
514
527
 
515
528
  after(:all) do
516
- plsql.connection.exec "DROP PROCEDURE test_blob_proc"
529
+ plsql.execute "DROP PROCEDURE test_blob_proc"
517
530
  end
518
531
 
519
532
  it "should find existing procedure" do
@@ -529,8 +542,8 @@ describe "Parameter type mapping /" do
529
542
  describe "Function with record parameter" do
530
543
 
531
544
  before(:all) do
532
- plsql.connection.exec "DROP TABLE test_employees" rescue nil
533
- plsql.connection.exec <<-SQL
545
+ plsql.execute "DROP TABLE test_employees" rescue nil
546
+ plsql.execute <<-SQL
534
547
  CREATE TABLE test_employees (
535
548
  employee_id NUMBER(15),
536
549
  first_name VARCHAR2(50),
@@ -538,7 +551,7 @@ describe "Parameter type mapping /" do
538
551
  hire_date DATE
539
552
  )
540
553
  SQL
541
- plsql.connection.exec <<-SQL
554
+ plsql.execute <<-SQL
542
555
  CREATE OR REPLACE FUNCTION test_full_name (p_employee test_employees%ROWTYPE)
543
556
  RETURN VARCHAR2
544
557
  IS
@@ -546,7 +559,7 @@ describe "Parameter type mapping /" do
546
559
  RETURN p_employee.first_name || ' ' || p_employee.last_name;
547
560
  END test_full_name;
548
561
  SQL
549
- plsql.connection.exec <<-SQL
562
+ plsql.execute <<-SQL
550
563
  CREATE OR REPLACE FUNCTION test_employee_record (p_employee test_employees%ROWTYPE)
551
564
  RETURN test_employees%ROWTYPE
552
565
  IS
@@ -554,7 +567,7 @@ describe "Parameter type mapping /" do
554
567
  RETURN p_employee;
555
568
  END test_employee_record;
556
569
  SQL
557
- plsql.connection.exec <<-SQL
570
+ plsql.execute <<-SQL
558
571
  CREATE OR REPLACE FUNCTION test_employee_record2 (p_employee test_employees%ROWTYPE, x_employee OUT test_employees%ROWTYPE)
559
572
  RETURN test_employees%ROWTYPE
560
573
  IS
@@ -581,10 +594,10 @@ describe "Parameter type mapping /" do
581
594
  end
582
595
 
583
596
  after(:all) do
584
- plsql.connection.exec "DROP FUNCTION test_full_name"
585
- plsql.connection.exec "DROP FUNCTION test_employee_record"
586
- plsql.connection.exec "DROP FUNCTION test_employee_record2"
587
- plsql.connection.exec "DROP TABLE test_employees"
597
+ plsql.execute "DROP FUNCTION test_full_name"
598
+ plsql.execute "DROP FUNCTION test_employee_record"
599
+ plsql.execute "DROP FUNCTION test_employee_record2"
600
+ plsql.execute "DROP TABLE test_employees"
588
601
  end
589
602
 
590
603
  it "should find existing function" do
@@ -622,7 +635,7 @@ describe "Parameter type mapping /" do
622
635
  describe "Function with boolean parameters" do
623
636
 
624
637
  before(:all) do
625
- plsql.connection.exec <<-SQL
638
+ plsql.execute <<-SQL
626
639
  CREATE OR REPLACE FUNCTION test_boolean
627
640
  ( p_boolean BOOLEAN )
628
641
  RETURN BOOLEAN
@@ -631,7 +644,7 @@ describe "Parameter type mapping /" do
631
644
  RETURN p_boolean;
632
645
  END test_boolean;
633
646
  SQL
634
- plsql.connection.exec <<-SQL
647
+ plsql.execute <<-SQL
635
648
  CREATE OR REPLACE PROCEDURE test_boolean2
636
649
  ( p_boolean BOOLEAN, x_boolean OUT BOOLEAN )
637
650
  IS
@@ -642,8 +655,8 @@ describe "Parameter type mapping /" do
642
655
  end
643
656
 
644
657
  after(:all) do
645
- plsql.connection.exec "DROP FUNCTION test_boolean"
646
- plsql.connection.exec "DROP PROCEDURE test_boolean2"
658
+ plsql.execute "DROP FUNCTION test_boolean"
659
+ plsql.execute "DROP PROCEDURE test_boolean2"
647
660
  end
648
661
 
649
662
  it "should accept true value and return true value" do
@@ -675,25 +688,25 @@ describe "Parameter type mapping /" do
675
688
  describe "Function with object type parameter" do
676
689
 
677
690
  before(:all) do
678
- plsql.connection.exec "DROP TYPE t_employee" rescue nil
679
- plsql.connection.exec "DROP TYPE t_phones" rescue nil
680
- plsql.connection.exec <<-SQL
691
+ plsql.execute "DROP TYPE t_employee" rescue nil
692
+ plsql.execute "DROP TYPE t_phones" rescue nil
693
+ plsql.execute <<-SQL
681
694
  CREATE OR REPLACE TYPE t_address AS OBJECT (
682
695
  street VARCHAR2(50),
683
696
  city VARCHAR2(50),
684
697
  country VARCHAR2(50)
685
698
  )
686
699
  SQL
687
- plsql.connection.exec <<-SQL
700
+ plsql.execute <<-SQL
688
701
  CREATE OR REPLACE TYPE t_phone AS OBJECT (
689
702
  type VARCHAR2(10),
690
703
  phone_number VARCHAR2(50)
691
704
  )
692
705
  SQL
693
- plsql.connection.exec <<-SQL
706
+ plsql.execute <<-SQL
694
707
  CREATE OR REPLACE TYPE t_phones AS TABLE OF T_PHONE
695
708
  SQL
696
- plsql.connection.exec <<-SQL
709
+ plsql.execute <<-SQL
697
710
  CREATE OR REPLACE TYPE t_employee AS OBJECT (
698
711
  employee_id NUMBER(15),
699
712
  first_name VARCHAR2(50),
@@ -703,7 +716,7 @@ describe "Parameter type mapping /" do
703
716
  phones t_phones
704
717
  )
705
718
  SQL
706
- plsql.connection.exec <<-SQL
719
+ plsql.execute <<-SQL
707
720
  CREATE OR REPLACE FUNCTION test_full_name (p_employee t_employee)
708
721
  RETURN VARCHAR2
709
722
  IS
@@ -711,7 +724,7 @@ describe "Parameter type mapping /" do
711
724
  RETURN p_employee.first_name || ' ' || p_employee.last_name;
712
725
  END;
713
726
  SQL
714
- plsql.connection.exec <<-SQL
727
+ plsql.execute <<-SQL
715
728
  CREATE OR REPLACE FUNCTION test_employee_object (p_employee t_employee)
716
729
  RETURN t_employee
717
730
  IS
@@ -719,7 +732,7 @@ describe "Parameter type mapping /" do
719
732
  RETURN p_employee;
720
733
  END;
721
734
  SQL
722
- plsql.connection.exec <<-SQL
735
+ plsql.execute <<-SQL
723
736
  CREATE OR REPLACE FUNCTION test_employee_object2 (p_employee t_employee, x_employee OUT t_employee)
724
737
  RETURN t_employee
725
738
  IS
@@ -739,13 +752,13 @@ describe "Parameter type mapping /" do
739
752
  end
740
753
 
741
754
  after(:all) do
742
- plsql.connection.exec "DROP FUNCTION test_full_name"
743
- plsql.connection.exec "DROP FUNCTION test_employee_object"
744
- plsql.connection.exec "DROP FUNCTION test_employee_object2"
745
- plsql.connection.exec "DROP TYPE t_employee"
746
- plsql.connection.exec "DROP TYPE t_address"
747
- plsql.connection.exec "DROP TYPE t_phones"
748
- plsql.connection.exec "DROP TYPE t_phone"
755
+ plsql.execute "DROP FUNCTION test_full_name"
756
+ plsql.execute "DROP FUNCTION test_employee_object"
757
+ plsql.execute "DROP FUNCTION test_employee_object2"
758
+ plsql.execute "DROP TYPE t_employee"
759
+ plsql.execute "DROP TYPE t_address"
760
+ plsql.execute "DROP TYPE t_phones"
761
+ plsql.execute "DROP TYPE t_phone"
749
762
  end
750
763
 
751
764
  it "should find existing function" do
@@ -781,10 +794,10 @@ describe "Parameter type mapping /" do
781
794
 
782
795
  before(:all) do
783
796
  # Array of numbers
784
- plsql.connection.exec <<-SQL
797
+ plsql.execute <<-SQL
785
798
  CREATE OR REPLACE TYPE t_numbers AS TABLE OF NUMBER(15)
786
799
  SQL
787
- plsql.connection.exec <<-SQL
800
+ plsql.execute <<-SQL
788
801
  CREATE OR REPLACE FUNCTION test_sum (p_numbers IN t_numbers)
789
802
  RETURN NUMBER
790
803
  IS
@@ -803,7 +816,7 @@ describe "Parameter type mapping /" do
803
816
  END;
804
817
  SQL
805
818
 
806
- plsql.connection.exec <<-SQL
819
+ plsql.execute <<-SQL
807
820
  CREATE OR REPLACE FUNCTION test_increment(p_numbers IN t_numbers, p_increment_by IN NUMBER DEFAULT 1)
808
821
  RETURN t_numbers
809
822
  IS
@@ -820,10 +833,10 @@ describe "Parameter type mapping /" do
820
833
  SQL
821
834
 
822
835
  # Array of strings
823
- plsql.connection.exec <<-SQL
836
+ plsql.execute <<-SQL
824
837
  CREATE OR REPLACE TYPE t_strings AS TABLE OF VARCHAR2(4000)
825
838
  SQL
826
- plsql.connection.exec <<-SQL
839
+ plsql.execute <<-SQL
827
840
  CREATE OR REPLACE FUNCTION test_copy_strings(p_strings IN t_strings, x_strings OUT t_strings)
828
841
  RETURN t_strings
829
842
  IS
@@ -840,14 +853,14 @@ describe "Parameter type mapping /" do
840
853
  SQL
841
854
 
842
855
  # Wrong type definition inside package
843
- plsql.connection.exec <<-SQL
856
+ plsql.execute <<-SQL
844
857
  CREATE OR REPLACE PACKAGE test_collections IS
845
858
  TYPE t_numbers IS TABLE OF NUMBER(15);
846
859
  FUNCTION test_sum (p_numbers IN t_numbers)
847
860
  RETURN NUMBER;
848
861
  END;
849
862
  SQL
850
- plsql.connection.exec <<-SQL
863
+ plsql.execute <<-SQL
851
864
  CREATE OR REPLACE PACKAGE BODY test_collections IS
852
865
  FUNCTION test_sum (p_numbers IN t_numbers)
853
866
  RETURN NUMBER
@@ -869,16 +882,16 @@ describe "Parameter type mapping /" do
869
882
  SQL
870
883
 
871
884
  # Array of objects
872
- plsql.connection.exec <<-SQL
885
+ plsql.execute <<-SQL
873
886
  CREATE OR REPLACE TYPE t_phone AS OBJECT (
874
887
  type VARCHAR2(10),
875
888
  phone_number VARCHAR2(50)
876
889
  )
877
890
  SQL
878
- plsql.connection.exec <<-SQL
891
+ plsql.execute <<-SQL
879
892
  CREATE OR REPLACE TYPE t_phones AS TABLE OF T_PHONE
880
893
  SQL
881
- plsql.connection.exec <<-SQL
894
+ plsql.execute <<-SQL
882
895
  CREATE OR REPLACE FUNCTION test_copy_objects(p_phones IN t_phones, x_phones OUT t_phones)
883
896
  RETURN t_phones
884
897
  IS
@@ -890,15 +903,15 @@ describe "Parameter type mapping /" do
890
903
  end
891
904
 
892
905
  after(:all) do
893
- plsql.connection.exec "DROP FUNCTION test_sum"
894
- plsql.connection.exec "DROP FUNCTION test_increment"
895
- plsql.connection.exec "DROP FUNCTION test_copy_strings"
896
- plsql.connection.exec "DROP PACKAGE test_collections"
897
- plsql.connection.exec "DROP FUNCTION test_copy_objects"
898
- plsql.connection.exec "DROP TYPE t_numbers"
899
- plsql.connection.exec "DROP TYPE t_strings"
900
- plsql.connection.exec "DROP TYPE t_phones"
901
- plsql.connection.exec "DROP TYPE t_phone"
906
+ plsql.execute "DROP FUNCTION test_sum"
907
+ plsql.execute "DROP FUNCTION test_increment"
908
+ plsql.execute "DROP FUNCTION test_copy_strings"
909
+ plsql.execute "DROP PACKAGE test_collections"
910
+ plsql.execute "DROP FUNCTION test_copy_objects"
911
+ plsql.execute "DROP TYPE t_numbers"
912
+ plsql.execute "DROP TYPE t_strings"
913
+ plsql.execute "DROP TYPE t_phones"
914
+ plsql.execute "DROP TYPE t_phone"
902
915
  end
903
916
 
904
917
  it "should find existing function" do
@@ -940,10 +953,10 @@ describe "Parameter type mapping /" do
940
953
 
941
954
  before(:all) do
942
955
  # Array of numbers
943
- plsql.connection.exec <<-SQL
956
+ plsql.execute <<-SQL
944
957
  CREATE OR REPLACE TYPE t_numbers_array AS VARRAY(100) OF NUMBER(15)
945
958
  SQL
946
- plsql.connection.exec <<-SQL
959
+ plsql.execute <<-SQL
947
960
  CREATE OR REPLACE FUNCTION test_sum (p_numbers IN t_numbers_array)
948
961
  RETURN NUMBER
949
962
  IS
@@ -960,7 +973,7 @@ describe "Parameter type mapping /" do
960
973
  END;
961
974
  SQL
962
975
 
963
- plsql.connection.exec <<-SQL
976
+ plsql.execute <<-SQL
964
977
  CREATE OR REPLACE FUNCTION test_increment(p_numbers IN t_numbers_array, p_increment_by IN NUMBER DEFAULT 1)
965
978
  RETURN t_numbers_array
966
979
  IS
@@ -975,10 +988,10 @@ describe "Parameter type mapping /" do
975
988
  SQL
976
989
 
977
990
  # Array of strings
978
- plsql.connection.exec <<-SQL
991
+ plsql.execute <<-SQL
979
992
  CREATE OR REPLACE TYPE t_strings_array AS VARRAY(100) OF VARCHAR2(4000)
980
993
  SQL
981
- plsql.connection.exec <<-SQL
994
+ plsql.execute <<-SQL
982
995
  CREATE OR REPLACE FUNCTION test_copy_strings(p_strings IN t_strings_array, x_strings OUT t_strings_array)
983
996
  RETURN t_strings_array
984
997
  IS
@@ -993,17 +1006,17 @@ describe "Parameter type mapping /" do
993
1006
  SQL
994
1007
 
995
1008
  # Array of objects
996
- plsql.connection.exec "DROP TYPE t_phones_array" rescue nil
997
- plsql.connection.exec <<-SQL
1009
+ plsql.execute "DROP TYPE t_phones_array" rescue nil
1010
+ plsql.execute <<-SQL
998
1011
  CREATE OR REPLACE TYPE t_phone AS OBJECT (
999
1012
  type VARCHAR2(10),
1000
1013
  phone_number VARCHAR2(50)
1001
1014
  )
1002
1015
  SQL
1003
- plsql.connection.exec <<-SQL
1016
+ plsql.execute <<-SQL
1004
1017
  CREATE OR REPLACE TYPE t_phones_array AS ARRAY(100) OF T_PHONE
1005
1018
  SQL
1006
- plsql.connection.exec <<-SQL
1019
+ plsql.execute <<-SQL
1007
1020
  CREATE OR REPLACE FUNCTION test_copy_objects(p_phones IN t_phones_array, x_phones OUT t_phones_array)
1008
1021
  RETURN t_phones_array
1009
1022
  IS
@@ -1015,14 +1028,14 @@ describe "Parameter type mapping /" do
1015
1028
  end
1016
1029
 
1017
1030
  after(:all) do
1018
- plsql.connection.exec "DROP FUNCTION test_sum"
1019
- plsql.connection.exec "DROP FUNCTION test_increment"
1020
- plsql.connection.exec "DROP FUNCTION test_copy_strings"
1021
- plsql.connection.exec "DROP FUNCTION test_copy_objects"
1022
- plsql.connection.exec "DROP TYPE t_numbers_array"
1023
- plsql.connection.exec "DROP TYPE t_strings_array"
1024
- plsql.connection.exec "DROP TYPE t_phones_array"
1025
- plsql.connection.exec "DROP TYPE t_phone"
1031
+ plsql.execute "DROP FUNCTION test_sum"
1032
+ plsql.execute "DROP FUNCTION test_increment"
1033
+ plsql.execute "DROP FUNCTION test_copy_strings"
1034
+ plsql.execute "DROP FUNCTION test_copy_objects"
1035
+ plsql.execute "DROP TYPE t_numbers_array"
1036
+ plsql.execute "DROP TYPE t_strings_array"
1037
+ plsql.execute "DROP TYPE t_phones_array"
1038
+ plsql.execute "DROP TYPE t_phone"
1026
1039
  end
1027
1040
 
1028
1041
  it "should find existing function" do
@@ -1057,8 +1070,8 @@ describe "Parameter type mapping /" do
1057
1070
  describe "Function with cursor return value or parameter" do
1058
1071
 
1059
1072
  before(:all) do
1060
- plsql.connection.exec "DROP TABLE test_employees" rescue nil
1061
- plsql.connection.exec <<-SQL
1073
+ plsql.execute "DROP TABLE test_employees" rescue nil
1074
+ plsql.execute <<-SQL
1062
1075
  CREATE TABLE test_employees (
1063
1076
  employee_id NUMBER(15),
1064
1077
  first_name VARCHAR2(50),
@@ -1066,7 +1079,7 @@ describe "Parameter type mapping /" do
1066
1079
  hire_date DATE
1067
1080
  )
1068
1081
  SQL
1069
- plsql.connection.exec <<-SQL
1082
+ plsql.execute <<-SQL
1070
1083
  CREATE OR REPLACE PROCEDURE test_insert_employee(p_employee test_employees%ROWTYPE)
1071
1084
  IS
1072
1085
  BEGIN
@@ -1074,7 +1087,7 @@ describe "Parameter type mapping /" do
1074
1087
  VALUES p_employee;
1075
1088
  END;
1076
1089
  SQL
1077
- plsql.connection.exec <<-SQL
1090
+ plsql.execute <<-SQL
1078
1091
  CREATE OR REPLACE FUNCTION test_cursor
1079
1092
  RETURN SYS_REFCURSOR
1080
1093
  IS
@@ -1085,7 +1098,7 @@ describe "Parameter type mapping /" do
1085
1098
  RETURN l_cursor;
1086
1099
  END;
1087
1100
  SQL
1088
- plsql.connection.exec <<-SQL
1101
+ plsql.execute <<-SQL
1089
1102
  CREATE OR REPLACE PROCEDURE test_cursor_out(x_cursor OUT SYS_REFCURSOR)
1090
1103
  IS
1091
1104
  BEGIN
@@ -1093,7 +1106,7 @@ describe "Parameter type mapping /" do
1093
1106
  SELECT * FROM test_employees ORDER BY employee_id;
1094
1107
  END;
1095
1108
  SQL
1096
- plsql.connection.exec <<-SQL
1109
+ plsql.execute <<-SQL
1097
1110
  CREATE OR REPLACE FUNCTION test_cursor_fetch(p_cursor SYS_REFCURSOR)
1098
1111
  RETURN test_employees%ROWTYPE
1099
1112
  IS
@@ -1119,11 +1132,11 @@ describe "Parameter type mapping /" do
1119
1132
  end
1120
1133
 
1121
1134
  after(:all) do
1122
- plsql.connection.exec "DROP FUNCTION test_cursor"
1123
- plsql.connection.exec "DROP PROCEDURE test_cursor_out"
1124
- plsql.connection.exec "DROP PROCEDURE test_insert_employee"
1125
- plsql.connection.exec "DROP FUNCTION test_cursor_fetch"
1126
- plsql.connection.exec "DROP TABLE test_employees"
1135
+ plsql.execute "DROP FUNCTION test_cursor"
1136
+ plsql.execute "DROP PROCEDURE test_cursor_out"
1137
+ plsql.execute "DROP PROCEDURE test_insert_employee"
1138
+ plsql.execute "DROP FUNCTION test_cursor_fetch"
1139
+ plsql.execute "DROP TABLE test_employees"
1127
1140
  end
1128
1141
 
1129
1142
  it "should find existing function" do
@@ -1211,7 +1224,7 @@ describe "Synonyms /" do
1211
1224
  describe "Local synonym to function" do
1212
1225
 
1213
1226
  before(:all) do
1214
- plsql.connection.exec <<-EOS
1227
+ plsql.execute <<-SQL
1215
1228
  CREATE OR REPLACE FUNCTION hr.test_uppercase
1216
1229
  ( p_string VARCHAR2 )
1217
1230
  RETURN VARCHAR2
@@ -1219,13 +1232,13 @@ describe "Synonyms /" do
1219
1232
  BEGIN
1220
1233
  RETURN UPPER(p_string);
1221
1234
  END test_uppercase;
1222
- EOS
1223
- plsql.connection.exec "CREATE SYNONYM test_synonym FOR hr.test_uppercase"
1235
+ SQL
1236
+ plsql.execute "CREATE SYNONYM test_synonym FOR hr.test_uppercase"
1224
1237
  end
1225
1238
 
1226
1239
  after(:all) do
1227
- plsql.connection.exec "DROP SYNONYM test_synonym"
1228
- plsql.connection.exec "DROP FUNCTION hr.test_uppercase"
1240
+ plsql.execute "DROP SYNONYM test_synonym"
1241
+ plsql.execute "DROP FUNCTION hr.test_uppercase"
1229
1242
  end
1230
1243
 
1231
1244
  it "should find synonym to function" do
@@ -1241,18 +1254,18 @@ describe "Synonyms /" do
1241
1254
  describe "Public synonym to function" do
1242
1255
 
1243
1256
  before(:all) do
1244
- plsql.connection.exec <<-EOS
1257
+ plsql.execute <<-SQL
1245
1258
  CREATE OR REPLACE FUNCTION hr.test_ora_login_user
1246
1259
  RETURN VARCHAR2
1247
1260
  IS
1248
1261
  BEGIN
1249
1262
  RETURN 'XXX';
1250
1263
  END test_ora_login_user;
1251
- EOS
1264
+ SQL
1252
1265
  end
1253
1266
 
1254
1267
  after(:all) do
1255
- plsql.connection.exec "DROP FUNCTION hr.test_ora_login_user"
1268
+ plsql.execute "DROP FUNCTION hr.test_ora_login_user"
1256
1269
  end
1257
1270
 
1258
1271
  it "should find public synonym to function" do
@@ -1263,13 +1276,17 @@ describe "Synonyms /" do
1263
1276
  plsql.ora_login_user.should == 'HR'
1264
1277
  end
1265
1278
 
1279
+ it "should not find public synonym if schema prefix is used" do
1280
+ lambda { plsql.hr.ora_login_user }.should raise_error(ArgumentError)
1281
+ end
1282
+
1266
1283
  it "should find private synonym before public synonym" do
1267
1284
  # should reconnect to force clearing of procedure cache
1268
1285
  plsql.connection = get_connection
1269
- plsql.connection.exec "DROP SYNONYM ora_login_user" rescue nil
1270
- plsql.connection.exec "CREATE SYNONYM ora_login_user FOR hr.test_ora_login_user"
1286
+ plsql.execute "DROP SYNONYM ora_login_user" rescue nil
1287
+ plsql.execute "CREATE SYNONYM ora_login_user FOR hr.test_ora_login_user"
1271
1288
  plsql.ora_login_user.should == 'XXX'
1272
- plsql.connection.exec "DROP SYNONYM ora_login_user"
1289
+ plsql.execute "DROP SYNONYM ora_login_user"
1273
1290
  plsql.connection = get_connection
1274
1291
  plsql.ora_login_user.should == 'HR'
1275
1292
  end
@@ -1277,3 +1294,19 @@ describe "Synonyms /" do
1277
1294
  end
1278
1295
 
1279
1296
  end
1297
+
1298
+ describe "SYS.STANDARD procedures /" do
1299
+
1300
+ before(:all) do
1301
+ plsql.connection = get_connection
1302
+ end
1303
+
1304
+ after(:all) do
1305
+ plsql.logoff
1306
+ end
1307
+
1308
+ it "should execute function from SYS.STANDARD package" do
1309
+ plsql.upper('abc').should == 'ABC'
1310
+ end
1311
+
1312
+ end