• About Us
  • Privacy Policy
  • Disclaimer
  • Contact Us
AimactGrow
  • Home
  • Technology
  • AI
  • SEO
  • Coding
  • Gaming
  • Cybersecurity
  • Digital marketing
No Result
View All Result
  • Home
  • Technology
  • AI
  • SEO
  • Coding
  • Gaming
  • Cybersecurity
  • Digital marketing
No Result
View All Result
AimactGrow
No Result
View All Result

Use jOOQ’s code generator to simply go table-valued parameters

Admin by Admin
April 26, 2025
Home Coding
Share on FacebookShare on Twitter


Microsoft T-SQL helps a language function referred to as table-valued parameter (TVP), which is a parameter of a desk kind that may be handed to a saved process or operate.

For instance, it’s possible you’ll write:

CREATE TYPE u_number_table AS TABLE (column_value INTEGER);

CREATE FUNCTION f_cross_multiply (
  @numbers u_number_table READONLY
)
RETURNS @outcome TABLE (
  i1 INTEGER,
  i2 INTEGER,
  product INTEGER
)
AS
BEGIN
  INSERT INTO @outcome
  SELECT
    n1.column_value, 
    n2.column_value, 
    n1.column_value * n2.column_value
  FROM @numbers n1
  CROSS JOIN @numbers n2

  RETURN
END

This operate takes a table-valued parameter (TVP), and produces a outcome set containing the cross product of the parameter desk with itself. The operate occurs to be a table-valued operate, however this isn’t strictly crucial. Desk-valued parameters may be handed to any operate or process.

In native T-SQL, the above operate can be utilized as follows:

DECLARE @t u_number_table;
INSERT INTO @t VALUES (1), (2), (3);
SELECT * FROM f_cross_multiply(@t);

Producing the next output:

|i1 |i2 |product|
|---|---|-------|
|1  |1  |1      |
|2  |1  |2      |
|3  |1  |3      |
|1  |2  |2      |
|2  |2  |4      |
|3  |2  |6      |
|1  |3  |3      |
|2  |3  |6      |
|3  |3  |9      |

Calling the operate from Java

Utilizing native JDBC, it’s attainable to observe the table-valued parameters tutorials and use a com.microsoft.sqlserver.jdbc.SQLServerDataTable, however should you’re utilizing jOOQ and its code generator, each the user-defined kind and the operate may have generated Java code so that you can name simply:

Listing l = Listing.of(1, 2, 3);
Consequence outcome = ctx
    .selectFrom(fCrossMultiply(new UNumberTableRecord(
        l.stream().map(UNumberTableElementTypeRecord::new).toList()
    )))
    .fetch();

You possibly can think about extra advanced queries the place the table-valued operate is used e.g. in a CROSS APPLY operator.

There are a number of generated objects right here:

  • FCrossMultiplyRecord is a TableRecord containing the rows produced by the f_cross_multiply operate.
  • Routines.fCrossMultiply is a static-imported technique that fashions an embedded name to a table-valued operate (standalone calls are additionally attainable)
  • UNumberTableRecord is a document representing the user-defined kind u_number_table, which may be handed as a desk valued parameter
  • UNumberTableElementTypeRecord is an artificial document kind for a single row of a u_number_table (extra advanced sorts with a number of attributes are attainable, too!)

Printing this outcome yields:

+----+----+-------+
|  i1|  i2|product|
+----+----+-------+
|   1|   1|      1|
|   2|   1|      2|
|   3|   1|      3|
|   1|   2|      2|
|   2|   2|      4|
|   3|   2|      6|
|   1|   3|      3|
|   2|   3|      6|
|   3|   3|      9|
+----+----+-------+

Alternatively, simply use the generated code to entry the outcome rows like this:

outcome.forEach(r -> {
    System.out.println(
        r.getI1() + " * " + r.getI2() + " = " + r.getProduct()
    );
});

To get:

1 * 1 = 1
2 * 1 = 2
3 * 1 = 3
1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
1 * 3 = 3
2 * 3 = 6
3 * 3 = 9

Simply join jOOQ’s code generator to your SQL Server database, and begin calling your capabilities accepting table-valued parameters with ease!

Like this:

Like Loading…

Tags: CodeEasilygeneratorjOOQsparametersPasstablevalued
Admin

Admin

Next Post
Software program provide chain safety AI brokers take motion

Software program provide chain safety AI brokers take motion

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recommended.

Subdomains for search engine optimization: Ought to You Use Them?

Subdomains for search engine optimization: Ought to You Use Them?

January 3, 2026
Romance with ChatGPT: A New Frontier

Romance with ChatGPT: A New Frontier

April 1, 2025

Trending.

AI-Assisted Menace Actor Compromises 600+ FortiGate Gadgets in 55 Nations

AI-Assisted Menace Actor Compromises 600+ FortiGate Gadgets in 55 Nations

February 23, 2026
How Voice-Enabled NSFW AI Video Turbines Are Altering Roleplay Endlessly

How Voice-Enabled NSFW AI Video Turbines Are Altering Roleplay Endlessly

June 10, 2025
Introducing Sophos Endpoint for Legacy Platforms – Sophos Information

Introducing Sophos Endpoint for Legacy Platforms – Sophos Information

August 28, 2025
Design Has By no means Been Extra Vital: Inside Shopify’s Acquisition of Molly

Design Has By no means Been Extra Vital: Inside Shopify’s Acquisition of Molly

September 8, 2025
Rogue Planet’ in Growth for Launch on iOS, Android, Change, and Steam in 2025 – TouchArcade

Rogue Planet’ in Growth for Launch on iOS, Android, Change, and Steam in 2025 – TouchArcade

June 19, 2025

AimactGrow

Welcome to AimactGrow, your ultimate source for all things technology! Our mission is to provide insightful, up-to-date content on the latest advancements in technology, coding, gaming, digital marketing, SEO, cybersecurity, and artificial intelligence (AI).

Categories

  • AI
  • Coding
  • Cybersecurity
  • Digital marketing
  • Gaming
  • SEO
  • Technology

Recent News

A Sensible Information for GTM Groups

A Sensible Information for GTM Groups

March 4, 2026
Pretend Laravel Packages on Packagist Deploy RAT on Home windows, macOS, and Linux

Pretend Laravel Packages on Packagist Deploy RAT on Home windows, macOS, and Linux

March 4, 2026
  • About Us
  • Privacy Policy
  • Disclaimer
  • Contact Us

© 2025 https://blog.aimactgrow.com/ - All Rights Reserved

No Result
View All Result
  • Home
  • Technology
  • AI
  • SEO
  • Coding
  • Gaming
  • Cybersecurity
  • Digital marketing

© 2025 https://blog.aimactgrow.com/ - All Rights Reserved