Project

General

Profile

Bug #3671 » GetOrgInOrgWideDetail_20250620.sql

Tri Rizqiaty, 06/20/2025 04:03 PM

 
1
??ALTER FUNCTION [dbo].[GetOrgInOrgWideDetail]
2

3
	(@org_id varchar(8), 
4

5
	@ref_date varchar(8), 
6

7
	@landscape varchar(3),
8

9
	@is_start bit,
10

11
	@org_name varchar(250), 
12

13
	@org_level VARCHAR(2),
14

15
	@org_id_00 VARCHAR(8), 
16

17
	@org_name_00 VARCHAR(250), 
18

19
	@org_id_01 VARCHAR(8), 
20

21
	@org_name_01 VARCHAR(250), 
22

23
	@org_id_02 varchar(8), 
24

25
	@org_name_02 varchar(250), 
26

27
	@org_id_03 varchar(8), 
28

29
	@org_name_03 varchar(250), 
30

31
	@org_id_04 varchar(8), 
32

33
	@org_name_04 varchar(250), 
34

35
	@org_id_05 varchar(8), 
36

37
	@org_name_05 varchar(250), 
38

39
	@org_id_06 varchar(8), 
40

41
	@org_name_06 varchar(250), 
42

43
	@org_id_07 varchar(8), 
44

45
	@org_name_07 varchar(250), 
46

47
	@org_id_08 varchar(8), 
48

49
	@org_name_08 varchar(250)
50

51
	)
52

53
RETURNS @result TABLE (
54

55
	org_id varchar(8), 
56

57
	org_name varchar(250), 
58

59
	org_level varchar(4),
60

61
	parent_org_id varchar(8),
62

63
	parent_org_name varchar(250),
64

65
	parent_org_level varchar(4),
66

67
	org_id_00 varchar(8), 
68

69
	org_name_00 varchar(250), 
70

71
	org_id_01 varchar(8), 
72

73
	org_name_01 varchar(250), 
74

75
	org_id_02 varchar(8), 
76

77
	org_name_02 varchar(250), 
78

79
	org_id_03 varchar(8), 
80

81
	org_name_03 varchar(250), 
82

83
	org_id_04 varchar(8), 
84

85
	org_name_04 varchar(250), 
86

87
	org_id_05 varchar(8), 
88

89
	org_name_05 varchar(250), 
90

91
	org_id_06 varchar(8), 
92

93
	org_name_06 varchar(250), 
94

95
	org_id_07 varchar(8), 
96

97
	org_name_07 varchar(250), 
98

99
	org_id_08 varchar(8), 
100

101
	org_name_08 varchar(250))
102

103
/*
104

105
SELECT * FROM dbo.GetOrgInOrgWide('00000411','20110725','100')
106

107
*/
108

109
BEGIN
110

111

112

113
	DECLARE @result_parent TABLE (
114

115
		org_id varchar(8), 
116

117
		org_name varchar(250), 
118

119
		org_level varchar(4),
120

121
		parent_org_id varchar(8),
122

123
		parent_org_name varchar(250),
124

125
		parent_org_level varchar(4),
126

127
		org_id_00 varchar(8), 
128

129
		org_name_00 varchar(250), 
130

131
		org_id_01 varchar(8), 
132

133
		org_name_01 varchar(250), 
134

135
		org_id_02 varchar(8), 
136

137
		org_name_02 varchar(250), 
138

139
		org_id_03 varchar(8), 
140

141
		org_name_03 varchar(250), 
142

143
		org_id_04 varchar(8), 
144

145
		org_name_04 varchar(250), 
146

147
		org_id_05 varchar(8), 
148

149
		org_name_05 varchar(250), 
150

151
		org_id_06 varchar(8), 
152

153
		org_name_06 varchar(250), 
154

155
		org_id_07 varchar(8), 
156

157
		org_name_07 varchar(250), 
158

159
		org_id_08 varchar(8), 
160

161
		org_name_08 varchar(250))
162

163

164

165
	DECLARE @result_child TABLE (
166

167
		org_id varchar(8), 
168

169
		org_name varchar(250), 
170

171
		org_level varchar(4),
172

173
		parent_org_id varchar(8),
174

175
		parent_org_name varchar(250),
176

177
		parent_org_level varchar(4),
178

179
		org_id_00 varchar(8), 
180

181
		org_name_00 varchar(250), 
182

183
		org_id_01 varchar(8), 
184

185
		org_name_01 varchar(250), 
186

187
		org_id_02 varchar(8), 
188

189
		org_name_02 varchar(250), 
190

191
		org_id_03 varchar(8), 
192

193
		org_name_03 varchar(250), 
194

195
		org_id_04 varchar(8), 
196

197
		org_name_04 varchar(250), 
198

199
		org_id_05 varchar(8), 
200

201
		org_name_05 varchar(250), 
202

203
		org_id_06 varchar(8), 
204

205
		org_name_06 varchar(250), 
206

207
		org_id_07 varchar(8), 
208

209
		org_name_07 varchar(250), 
210

211
		org_id_08 varchar(8), 
212

213
		org_name_08 varchar(250))
214

215

216

217
	DECLARE @_org_name varchar(250), 
218

219
		@_org_level varchar(4),
220

221
		@_org_id_00 varchar(8), 
222

223
		@_org_name_00 varchar(250), 
224

225
		@_org_id_01 varchar(8), 
226

227
		@_org_name_01 varchar(250), 
228

229
		@_org_id_02 varchar(8), 
230

231
		@_org_name_02 varchar(250), 
232

233
		@_org_id_03 varchar(8), 
234

235
		@_org_name_03 varchar(250), 
236

237
		@_org_id_04 varchar(8), 
238

239
		@_org_name_04 varchar(250), 
240

241
		@_org_id_05 varchar(8), 
242

243
		@_org_name_05 varchar(250), 
244

245
		@_org_id_06 varchar(8), 
246

247
		@_org_name_06 varchar(250), 
248

249
		@_org_id_07 varchar(8), 
250

251
		@_org_name_07 varchar(250), 
252

253
		@_org_id_08 varchar(8), 
254

255
		@_org_name_08 varchar(250)
256

257

258

259

260

261
	IF (@is_start = 1)
262

263
	BEGIN
264

265
		INSERT INTO @result_parent
266

267
		SELECT org.[object], org.description, orgd.org_level, '','', '',
268

269
			CASE WHEN orgd.org_level = '00' THEN org.[object] ELSE '' END,
270

271
			CASE WHEN orgd.org_level = '00' THEN org.description ELSE '' END,
272

273
			'',
274

275
			'',
276

277
			'',
278

279
			'',
280

281
			'',
282

283
			'',
284

285
			'',
286

287
			'',
288

289
			'',
290

291
			'',
292

293
			'',
294

295
			'',
296

297
			'',
298

299
			'',
300

301
			'',
302

303
			''
304

305
		FROM hr_md_orm_object org
306

307
			INNER JOIN hr_md_orm_o_o orgd
308

309
				ON org.[object] = orgd.[object]
310

311
		WHERE
312

313
			org.landscape = @landscape
314

315
			AND org.[class] = 'O'
316

317
			AND org.[object] = @org_id
318

319
			AND org.start_date <= @ref_date
320

321
			AND org.end_date >= @ref_date
322

323
			AND orgd.landscape = @landscape
324

325
			AND orgd.[object] = @org_id
326

327
			AND orgd.start_date <= @ref_date
328

329
			AND orgd.end_date >= @ref_date
330

331
	
332

333
		SELECT TOP 1 @_org_name = org_name, @_org_level = org_level
334

335
		FROM @result_parent;
336

337
		
338

339
		IF @_org_level = '00' SELECT @_org_id_00 = @org_id, @_org_name_00 = @_org_name
340

341
		IF @_org_level = '01' SELECT @_org_id_01 = @org_id, @_org_name_01 = @_org_name
342

343
		IF @_org_level = '02' SELECT @_org_id_02 = @org_id, @_org_name_02 = @_org_name
344

345
		IF @_org_level = '03' SELECT @_org_id_03 = @org_id, @_org_name_03 = @_org_name
346

347
		IF @_org_level = '04' SELECT @_org_id_04 = @org_id, @_org_name_04 = @_org_name
348

349
		IF @_org_level = '05' SELECT @_org_id_05 = @org_id, @_org_name_05 = @_org_name
350

351
		IF @_org_level = '06' SELECT @_org_id_06 = @org_id, @_org_name_06 = @_org_name
352

353
		IF @_org_level = '07' SELECT @_org_id_07 = @org_id, @_org_name_07 = @_org_name
354

355
		IF @_org_level = '08' SELECT @_org_id_08 = @org_id, @_org_name_08 = @_org_name
356

357
		
358

359
		INSERT INTO @result
360

361
		SELECT * FROM @result_parent
362

363
	END
364

365
	ELSE
366

367
	BEGIN
368

369
		SET @_org_name = @org_name
370

371
		SET @_org_level = @org_level
372

373
		SET @_org_id_00 = @org_id_00
374

375
		SET @_org_name_00 = @org_name_00
376

377
		SET @_org_id_01 = @org_id_01
378

379
		SET @_org_name_01 = @org_name_01
380

381
		SET @_org_id_02 = @org_id_02
382

383
		SET @_org_name_02 = @org_name_02
384

385
		SET @_org_id_03 = @org_id_03
386

387
		SET @_org_name_03 = @org_name_03
388

389
		SET @_org_id_04 = @org_id_04
390

391
		SET @_org_name_04 = @org_name_04
392

393
		SET @_org_id_05 = @org_id_05
394

395
		SET @_org_name_05 = @org_name_05
396

397
		SET @_org_id_06 = @org_id_06
398

399
		SET @_org_name_06 = @org_name_06
400

401
		SET @_org_id_07 = @org_id_07
402

403
		SET @_org_name_07 = @org_name_07
404

405
		SET @_org_id_08 = @org_id_08
406

407
		SET @_org_name_08 = @org_name_08
408

409
	END
410

411
		
412

413
	DECLARE 
414

415
		@__org_id varchar(8), 
416

417
		@__org_name varchar(50), 
418

419
		@__org_level varchar(3),
420

421
		@__parent_org_id varchar(8), 
422

423
		@__parent_org_name varchar(50), 
424

425
		@__parent_org_level varchar(3),
426

427
		@__org_id_00 varchar(8), 
428

429
		@__org_name_00 varchar(50), 
430

431
		@__org_id_01 varchar(8), 
432

433
		@__org_name_01 varchar(50), 
434

435
		@__org_id_02 varchar(8), 
436

437
		@__org_name_02 varchar(50), 
438

439
		@__org_id_03 varchar(8), 
440

441
		@__org_name_03 varchar(50), 
442

443
		@__org_id_04 varchar(8), 
444

445
		@__org_name_04 varchar(50), 
446

447
		@__org_id_05 varchar(8), 
448

449
		@__org_name_05 varchar(50), 
450

451
		@__org_id_06 varchar(8), 
452

453
		@__org_name_06 varchar(50), 
454

455
		@__org_id_07 varchar(8), 
456

457
		@__org_name_07 varchar(50), 
458

459
		@__org_id_08 varchar(8), 
460

461
		@__org_name_08 varchar(50)
462

463
	
464

465
	DECLARE cur CURSOR LOCAL FORWARD_ONLY STATIC
466

467
	FOR 
468

469
		SELECT org.[object], org.[description], orgd.org_level,
470

471
			@org_id,
472

473
			@_org_name,
474

475
			@_org_level,
476

477
			CASE WHEN orgd.org_level = '00' THEN org.[object] ELSE @_org_id_00 END,
478

479
			CASE WHEN orgd.org_level = '00' THEN org.description ELSE @_org_name_00 END,
480

481
			CASE WHEN orgd.org_level = '01' THEN org.[object] ELSE @_org_id_01 END,
482

483
			CASE WHEN orgd.org_level = '01' THEN org.description ELSE @_org_name_01 END,
484

485
			CASE WHEN orgd.org_level = '02' THEN org.[object] ELSE @_org_id_02 END,
486

487
			CASE WHEN orgd.org_level = '02' THEN org.description ELSE @_org_name_02 END,
488

489
			CASE WHEN orgd.org_level = '03' THEN org.[object] ELSE @_org_id_03 END,
490

491
			CASE WHEN orgd.org_level = '03' THEN org.description ELSE @_org_name_03 END,
492

493
			CASE WHEN orgd.org_level = '04' THEN org.[object] ELSE @_org_id_04 END,
494

495
			CASE WHEN orgd.org_level = '04' THEN org.description ELSE @_org_name_04 END,
496

497
			CASE WHEN orgd.org_level = '05' THEN org.[object] ELSE @_org_id_05 END,
498

499
			CASE WHEN orgd.org_level = '05' THEN org.description ELSE @_org_name_05 END,
500

501
			CASE WHEN orgd.org_level = '06' THEN org.[object] ELSE @_org_id_06 END,
502

503
			CASE WHEN orgd.org_level = '06' THEN org.description ELSE @_org_name_06 END,
504

505
			CASE WHEN orgd.org_level = '07' THEN org.[object] ELSE @_org_id_07 END,
506

507
			CASE WHEN orgd.org_level = '07' THEN org.description ELSE @_org_name_07 END,
508

509
			CASE WHEN orgd.org_level = '08' THEN org.[object] ELSE @_org_id_08 END,
510

511
			CASE WHEN orgd.org_level = '08' THEN org.description ELSE @_org_name_08 END
512

513
		FROM hr_md_orm_relationship rel
514

515
			INNER JOIN hr_md_orm_object org
516

517
				ON rel.[rel_object] = org.[object]
518

519
			INNER JOIN hr_md_orm_o_o orgd
520

521
				ON org.[object] = orgd.[object]
522

523
		WHERE
524

525
			rel.landscape = @landscape
526

527
			AND rel.[class] = 'O'
528

529
			AND rel.[object] = @org_id
530

531
			AND rel.rel_type = '001'
532

533
			AND rel.rel_dir = 'A'
534

535
			AND rel.start_date <= @ref_date
536

537
			AND rel.end_date >= @ref_date
538

539
			AND rel.rel_class = 'O'
540

541
			
542

543
			AND org.landscape = @landscape
544

545
			AND org.[class] = 'O'
546

547
			AND org.start_date <= @ref_date
548

549
			AND org.end_date >= @ref_date
550

551
			
552

553
			AND orgd.landscape = @landscape
554

555
			AND orgd.start_date <= @ref_date
556

557
			AND orgd.end_date >= @ref_date
558

559

560

561
	OPEN cur
562

563
	
564

565
	
566

567
	DECLARE @fetch_status INT
568

569
	SET @fetch_status = 0
570

571
	WHILE @fetch_status = 0
572

573
	BEGIN
574

575
		FETCH NEXT FROM cur INTO @__org_id, @__org_name, @__org_level,
576

577
			@__parent_org_id, @__parent_org_name, @__parent_org_level,
578

579
			@__org_id_00, @__org_name_00, 
580

581
			@__org_id_01, @__org_name_01, 
582

583
			@__org_id_02, @__org_name_02, 
584

585
			@__org_id_03, @__org_name_03, 
586

587
			@__org_id_04, @__org_name_04, 
588

589
			@__org_id_05, @__org_name_05, 
590

591
			@__org_id_06, @__org_name_06, 
592

593
			@__org_id_07, @__org_name_07, 
594

595
			@__org_id_08, @__org_name_08 
596

597
		
598

599
		SET @fetch_status = @@FETCH_STATUS
600

601
		IF (@fetch_status = 0)
602

603
		BEGIN
604

605
			INSERT INTO @result_child VALUES (@__org_id, @__org_name, @__org_level, --@__org_name, @__org_level,
606

607
			@__parent_org_id, @__parent_org_name, @__parent_org_level,
608

609
			@__org_id_00, @__org_name_00, 
610

611
			@__org_id_01, @__org_name_01, 
612

613
			@__org_id_02, @__org_name_02, 
614

615
			@__org_id_03, @__org_name_03, 
616

617
			@__org_id_04, @__org_name_04, 
618

619
			@__org_id_05, @__org_name_05, 
620

621
			@__org_id_06, @__org_name_06, 
622

623
			@__org_id_07, @__org_name_07, 
624

625
			@__org_id_08, @__org_name_08 )
626

627
			
628

629
			INSERT INTO @result_child
630

631
			SELECT * FROM GetOrgInOrgWideDetail(@__org_id, @ref_date, @landscape, 0, @__org_name, @__org_level,
632

633
				@__org_id_00, @__org_name_00, 
634

635
				@__org_id_01, @__org_name_01, 
636

637
				@__org_id_02, @__org_name_02, 
638

639
				@__org_id_03, @__org_name_03, 
640

641
				@__org_id_04, @__org_name_04, 
642

643
				@__org_id_05, @__org_name_05, 
644

645
				@__org_id_06, @__org_name_06,
646

647
				@__org_id_07, @__org_name_07, 
648

649
				@__org_id_08, @__org_name_08 
650

651
			)
652

653
		END
654

655
	END
656

657
	
658

659
	CLOSE cur
660

661
	DEALLOCATE cur
662

663
	
664

665
	INSERT INTO @result
666

667
	SELECT * FROM @result_child
668

669

670

671
	RETURN
672

673
END
674

675

(4-4/4)