Dwh.dev documentation
  • What is Dwh.dev?
  • Features
    • Data catalog
      • PIPEs
      • Fancy SQL Highlight
    • Data Lineage
      • Object-level lineage
      • Column-level Lineage
      • In-query lineage
      • Navigation
      • JOIN and WHERE
      • Equals column lineage
      • Strong and Weak dependencies
      • Default and Virtual Columns
      • Implicit Types casting
      • Circle dependencies
      • Argument forwarding
    • TASKs
  • Integrations
    • Snowflake
      • Offline mode
      • Secured online mode
      • Snowflake Marketplace
    • DBT
    • ETL
    • BI
      • Looker
      • Other
    • API
  • Snowflake SQL Syntax and Behavior
    • Identifiers
    • Reusing column aliases
    • SELECT * ILIKE EXCLUDE REPLACE RENAME
    • Scalar functions name resolution special behavior
    • Functions overloading
    • CTE as an expression alias
    • ASOF Join
    • UDF named arguments
    • Objects auto renaming
    • Columns auto renaming
Powered by GitBook
On this page

Was this helpful?

  1. Snowflake SQL Syntax and Behavior

Functions overloading

PreviousScalar functions name resolution special behaviorNextCTE as an expression alias

Last updated 8 months ago

Was this helpful?

Snowflake support . You can create multiple UDFs with the same name but with different types of arguments..

Let's create:

CREATE TABLE A(ID INT);
CREATE TABLE B(S STRING);

CREATE OR REPLACE FUNCTION fn_overload ( _id number )
  RETURNS TABLE (id int)
  AS 'select id from a where id > _id'
;


CREATE OR REPLACE FUNCTION fn_overload ( _s string )
  RETURNS TABLE (s string)
  AS 'select s from b where s != _s'
;

The first one has Table A as a source, and the second one Table B.

Now let's create VIEWs depending on these functions:

CREATE VIEW V1 AS
SELECT * FROM TABLE(fn_overload(1));

CREATE VIEW V2 AS
SELECT * FROM TABLE(fn_overload('1'));

Here is the result:

procedures and functions overloading
Dwh.dev