333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"use strict";
 
module.exports = {
  id: 0xF3,
  type: 'TVPTYPE',
  name: 'TVP',
  declaration: function declaration(parameter) {
    return parameter.value.name + ' readonly';
  },
  writeTypeInfo: function writeTypeInfo(buffer, parameter) {
    let ref, ref1, ref2, ref3;
    buffer.writeUInt8(this.id);
    buffer.writeBVarchar('');
    buffer.writeBVarchar((ref = (ref1 = parameter.value) != null ? ref1.schema : undefined) != null ? ref : '');
    buffer.writeBVarchar((ref2 = (ref3 = parameter.value) != null ? ref3.name : undefined) != null ? ref2 : '');
  },
  writeParameterData: function writeParameterData(buffer, parameter, options) {
    if (parameter.value == null) {
      buffer.writeUInt16LE(0xFFFF);
      buffer.writeUInt8(0x00);
      buffer.writeUInt8(0x00);
      return;
    }
 
    buffer.writeUInt16LE(parameter.value.columns.length);
    const ref = parameter.value.columns;
 
    for (let i = 0, len = ref.length; i < len; i++) {
      const column = ref[i];
      buffer.writeUInt32LE(0x00000000);
      buffer.writeUInt16LE(0x0000);
      column.type.writeTypeInfo(buffer, column);
      buffer.writeBVarchar('');
    }
 
    buffer.writeUInt8(0x00);
    const ref1 = parameter.value.rows;
 
    for (let j = 0, len1 = ref1.length; j < len1; j++) {
      const row = ref1[j];
      buffer.writeUInt8(0x01);
 
      for (let k = 0, len2 = row.length; k < len2; k++) {
        const value = row[k];
        const param = {
          value: value,
          length: parameter.value.columns[k].length,
          scale: parameter.value.columns[k].scale,
          precision: parameter.value.columns[k].precision
        };
        parameter.value.columns[k].type.writeParameterData(buffer, param, options);
      }
    }
 
    buffer.writeUInt8(0x00);
  },
  validate: function validate(value) {
    if (value == null) {
      return null;
    }
 
    if (typeof value !== 'object') {
      return new TypeError('Invalid table.');
    }
 
    if (!Array.isArray(value.columns)) {
      return new TypeError('Invalid table.');
    }
 
    if (!Array.isArray(value.rows)) {
      return new TypeError('Invalid table.');
    }
 
    return value;
  }
};