Reference Guide#
2-Step Configuration#
Follow the instruction to get the app and details about installation in Native App Installation.
Events and Logs#
To observe and troubleshoot app behavior, you can enable Logging and Event Tracing for your account and share the app logs with us. For more information, please check Snowflake Documentations below:
Stored Procedures#
CHECK_SINGLE_NAME#
The CHECK_SINGLE_NAME
procedure validates and standardizes individual name using the Global Name API.
It returns the verification results in JSON format or optional output table, supporting optional fields for flexible and accurate name validation.
There are 2 ways to check a name in Native App Global Name for Snowflake:
Fill in the Checking Form on the Native App interface.
Manually run a Snowflake SQL script to call the stored procedure.
Checking Form#
Open your Native App, select Menu > Check Single Name > Try It Now > Checking Form.
Input Example#
Enter the License Key and name you want to check.
Select Check.
Result will be displayed on the left sidebar.
Output Examples#
Check a single name
Result will be displayed in JSON format if Output Table Name and Output Table Fields are not specified.

Check a single name and insert the result to an output table
You can choose to insert the result to an output table for later use with our Default Output Fields.

Check a single name with selected output table fields
You can choose which fields to be included in the output table.

Check a single name with ‘ALL’ output table fields
You can choose to have All fields to be included in the output table.

SQL Script#
Manually call our procedures using a Snowflake SQL script.
Setup and Sample Script#
Select Projects > Worksheets on the left panel in your Snowflake account.
You can find the installed application database in Projects > Worksheets > Databases.
Select
+
to create a new SQL worksheet.Copy and paste the usage example below onto your worksheet to call the stored procedure, replace with your values.
Check Input Parameters for more information.
/****************************************************************** Global Name - Check Single Name Usage Example ******************************************************************/ USE GLOBAL_NAME.CORE; /* Check a single name, replace with your values*/ CALL CHECK_SINGLE_NAME( LICENSE => '<REPLACE_WITH_YOUR_LICENSE_KEY>' ,OPTIONS => '<OptionName_1:Parameter,OptionName_2:Parameter>' ,FULLNAME => 'Mr. John Doe' ,COMPANY => 'Melissa' ,COUNTRY => 'US' ,OUTPUT_TABLE_NAME => '<OUTPUT_TABLE_NAME>' ,OUTPUT_TABLE_FIELDS => '<Field_1,Field_2>' ); /* Result view, if output table name is provided */ SELECT * FROM <OUTPUT_TABLE_NAME>;
Example of a stored procedure call from a SQL worksheet. Highlight the SQL statement then select Run button on the right top corner.
Input Parameters#
Input parameters when calling stored procedure CHECK_SINGLE_NAME
.
Parameter |
Data Type |
Description |
Example |
---|---|---|---|
LICENSE |
VARCHAR |
Required. The License Key with Credits issued by Melissa. |
REPLACE_WITH_YOUR_LICENSE_KEY |
OPTIONS |
VARCHAR |
Required. Empty string is accepted. |
CorrectFirstName:On |
FULLNAME |
VARCHAR |
Required. |
Mr. John Doe |
COMPANY |
VARCHAR |
Required. Empty string is accepted. |
Melissa |
COUNTRY |
VARCHAR |
Required. Empty string is accepted. |
US |
OUTPUT_TABLE_NAME |
VARCHAR |
Required. Empty string is accepted. |
OUTPUT_TABLE_NAME |
OUTPUT_TABLE_FIELDS |
VARCHAR |
Required. Case-sensitive. Empty string is accepted. |
RecordID, |
Output Examples#
Some common output examples are shown below.
Check a single name
/******************************************************************
Global Name - Check Single Name Usage Example
******************************************************************/
USE GLOBAL_NAME.CORE;
/* Check a single name, replace with your values*/
CALL CHECK_SINGLE_NAME(
LICENSE => '<REPLACE_WITH_YOUR_LICENSE_KEY>'
,OPTIONS => 'CorrectFirstName:On'
,FULLNAME => 'Mr. John Doe'
,COMPANY => 'Melissa'
,COUNTRY => 'US'
,OUTPUT_TABLE_NAME => ''
,OUTPUT_TABLE_FIELDS => ''
);
Output will be displayed in JSON format.

Check a single name and insert the result into an output table
If OUTPUT_TABLE_NAME is provided, a new table will be created if not already existed in the same application database with Default Output Fields.
Call stored procedure
CHECK_SINGLE_NAME
.CALL CHECK_SINGLE_NAME( LICENSE => '<REPLACE_WITH_YOUR_LICENSE_KEY>' ,OPTIONS => 'CorrectFirstName:On' ,FULLNAME => 'Mr. John Doe' ,COMPANY => 'Melissa' ,COUNTRY => 'US' ,OUTPUT_TABLE_NAME => '<OUTPUT_TABLE_NAME>' ,OUTPUT_TABLE_FIELDS => '' );
Query output table.
SELECT * FROM <OUTPUT_TABLE_NAME>;
Check a single name with selected output fields
Call stored procedure
CHECK_SINGLE_NAME
.CALL CHECK_SINGLE_NAME( LICENSE => '<REPLACE_WITH_YOUR_LICENSE_KEY>' ,OPTIONS => 'CorrectFirstName:On' ,FULLNAME => 'Mr. John Doe' ,COMPANY => 'Melissa' ,COUNTRY => 'US' ,OUTPUT_TABLE_NAME => '<OUTPUT_TABLE_NAME>' ,OUTPUT_TABLE_FIELDS => '<Field_1,Field_2>' );
Query output table.
SELECT * FROM <OUTPUT_TABLE_NAME>;
Check a single name with ‘ALL’ output table fields
Call stored procedure
CHECK_SINGLE_NAME
.CALL CHECK_SINGLE_NAME( LICENSE => '<REPLACE_WITH_YOUR_LICENSE_KEY>' ,OPTIONS => 'CorrectFirstName:On' ,FULLNAME => 'Mr. John Doe' ,COMPANY => 'Melissa' ,COUNTRY => 'US' ,OUTPUT_TABLE_NAME => '<OUTPUT_TABLE_NAME>' ,OUTPUT_TABLE_FIELDS => 'All' );
Query output table.
SELECT * FROM <OUTPUT_TABLE_NAME>;
CHECK_MULTIPLE_NAMES#
The CHECK_MULTIPLE_NAMES
procedure processes name records in batches,
validating and standardizing key components using the Global Name API.
It can handle tables of any size, returning the results in a specified output table and supports optional fields for flexible, accurate name validation.
Requirements#
To use this feature, you need to prepare an input table in Snowflake beforehand referencing our default input fields below.
Default Input Fields#
Column Name |
Data Type |
Description |
---|---|---|
RECORDID |
NUMBER |
Required. |
FULLNAME |
VARCHAR |
Required. |
COMPANY |
VARCHAR |
Required. Empty string is accepted. |
COUNTRY |
VARCHAR |
Required. |
SQL Script#
You can find the installed application database in Projects > Worksheets > Databases.

Setup and Sample Script#
The step-by-step example below shows how to use our stored procedure CHECK_MULTIPLE_NAMES
with the default values.
Replace with your values.
Step 0 - Prepare an input table.
Assume that the input table has the signature below:
CREATE TABLE IF NOT EXISTS <INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE> ( RecID NUMBER(38,0) NOT NULL autoincrement start 1 increment 1 ,FullName VARCHAR(16777216) DEFAULT ('') ,CompanyName VARCHAR(16777216) DEFAULT ('') ,Country VARCHAR(16777216) DEFAULT (''), primary key (RecID) );
This input table has different column names from the Default Input Fields. Mapping column names in Step 2 is necessary for the program to get the correct parameters.
Step 1 - Grant Required Privileges.
Ensure the application has the necessary access to the input table. Replace placeholders with your actual values.
/********************************************************************** Global Name - Check Multiple Names Usage Example **********************************************************************/ /* Grant usage on input table to the application, replace with your values.*/ GRANT USAGE ON DATABASE <INPUT_DATABASE> TO APPLICATION GLOBAL_NAME; GRANT USAGE ON SCHEMA <INPUT_DATABASE>.<INPUT_SCHEMA> TO APPLICATION GLOBAL_NAME; GRANT SELECT ON TABLE <INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE> TO APPLICATION GLOBAL_NAME;
Step 2 - Map Input Columns with the Default Input Fields.
Set the required parameters and map your input columns to our Default Input Fields.
You can skip the mapping step if your input table matches our Default Input Fields exactly.
USE GLOBAL_NAME.CORE; /* Set input parameters, replace with your values */ SET LICENSE = '<REPLACE_WITH_YOUR_LICENSE_KEY>'; SET OPTIONS = '<OptionName_1:Parameter,OptionName_2:Parameter>'; SET INPUT_TABLE_NAME = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE_NAME>'; SET OUTPUT_TABLE_NAME = '<OUTPUT_TABLE_NAME>'; SET OUTPUT_TABLE_FIELDS = '<Field_1,Field_2>'; /* Map your input columns with our default input fields, replace with your actual column names if they differ from our default values */ CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS SELECT RecId AS RECORDID ,COALESCE(FULLNAME, '') AS FULLNAME ,COALESCE(COMPANYNAME, '') AS COMPANY ,COALESCE(COUNTRY, '') AS COUNTRY FROM IDENTIFIER($INPUT_TABLE_NAME);
Step 3 - Call stored procedure CHECK_MULTIPLE_NAMES to check your data.
Check Input Parameters for more information.
/* Call the check procedure */ CALL CHECK_MULTIPLE_NAMES( LICENSE => $LICENSE ,OPTIONS => $OPTIONS ,INPUT_TABLE_NAME => TABLE(INPUT_RECORDS) ,OUTPUT_TABLE_NAME => $OUTPUT_TABLE_NAME ,OUTPUT_TABLE_FIELDS => $OUTPUT_TABLE_FIELDS -- Size limit for variables is 256. If your input string exceeds the limit, parse the string directly in the call -- e.g. OUTPUT_TABLE_FIELDS => 'Field_1,Field_2' ); /* Output table view */ SELECT TOP 100 * FROM IDENTIFIER($OUTPUT_TABLE_NAME) ORDER BY (RECORDID);
Full SQL Script
/********************************************************************** Global Name - Check Multiple Names Usage Example **********************************************************************/ /* Grant usage on input table to the application, replace with your values.*/ GRANT USAGE ON DATABASE <INPUT_DATABASE> TO APPLICATION GLOBAL_NAME; GRANT USAGE ON SCHEMA <INPUT_DATABASE>.<INPUT_SCHEMA> TO APPLICATION GLOBAL_NAME; GRANT SELECT ON TABLE <INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE> TO APPLICATION GLOBAL_NAME; USE GLOBAL_NAME.CORE; /* Set input parameters, replace with your values */ SET LICENSE = '<REPLACE_WITH_YOUR_LICENSE_KEY>'; SET OPTIONS = '<OptionName_1:Parameter,OptionName_2:Parameter>'; SET INPUT_TABLE_NAME = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE_NAME>'; SET OUTPUT_TABLE_NAME = '<OUTPUT_TABLE_NAME>'; SET OUTPUT_TABLE_FIELDS = '<Field_1,Field_2>'; /* Map your input columns with our default input fields, replace with your actual column names if they differ from our default values */ CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS SELECT RECID AS RECORDID ,COALESCE(FULLNAME, '') AS FULLNAME ,COALESCE(COMPANYNAME, '') AS COMPANY ,COALESCE(COUNTRY, '') AS COUNTRY FROM IDENTIFIER($INPUT_TABLE_NAME); /* Call the check procedure */ CALL CHECK_MULTIPLE_NAMES( LICENSE => $LICENSE ,OPTIONS => $OPTIONS ,INPUT_TABLE_NAME => TABLE(INPUT_RECORDS) ,OUTPUT_TABLE_NAME => $OUTPUT_TABLE_NAME ,OUTPUT_TABLE_FIELDS => $OUTPUT_TABLE_FIELDS -- Size limit for variables is 256. If your input string exceeds the limit, parse the string directly in the call -- e.g. OUTPUT_TABLE_FIELDS => 'Field_1,Field_2' ); /* Output table view */ SELECT TOP 100 * FROM IDENTIFIER($OUTPUT_TABLE_NAME) ORDER BY (RECORDID);
Input Parameters#
Input parameters when calling stored procedure CHECK_MULTIPLE_NAMES
.
Parameter |
Data Type |
Description |
Example |
---|---|---|---|
LICENSE |
VARCHAR |
Required. The License Key with Credits issued by Melissa. |
REPLACE_WITH_YOUR_LICENSE_KEY |
OPTIONS |
VARCHAR |
Required. Empty string is accepted. |
CorrectFirstName:On |
INPUT_TABLE_NAME |
VARCHAR |
Required. |
IN_DB.IN_SCHEMA.INPUT_TABLE_NAME |
OUTPUT_TABLE_NAME |
VARCHAR |
Required. |
OUTPUT_TABLE_NAME |
OUTPUT_TABLE_FIELDS |
VARCHAR |
Required. Case-sensitive. Empty string is accepted.
|
RecordID, |
Output Examples#
Some common output examples are shown below.
Check multiple names with the default output fields
Call the stored procedure to check multiple names with Default Output Fields.
USE GLOBAL_NAME.CORE; /* Set input parameters, replace with your values */ SET LICENSE = '<REPLACE_WITH_YOUR_LICENSE_KEY>'; SET OPTIONS = '<OptionName_1:Parameter,OptionName_2:Parameter>'; SET INPUT_TABLE_NAME = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE_NAME>'; SET OUTPUT_TABLE_NAME = '<OUTPUT_TABLE_NAME>'; SET OUTPUT_TABLE_FIELDS = ''; /* Map your input columns with our default input fields, replace with your actual column names if they differ from our default values */ CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS SELECT RECID AS RECORDID ,COALESCE(FULLNAME, '') AS FULLNAME ,COALESCE(COMPANYNAME, '') AS COMPANY ,COALESCE(COUNTRY, '') AS COUNTRY FROM IDENTIFIER($INPUT_TABLE_NAME); /* Call the check procedure */ CALL CHECK_MULTIPLE_NAMES( LICENSE => $LICENSE ,OPTIONS => $OPTIONS ,INPUT_TABLE_NAME => TABLE(INPUT_RECORDS) ,OUTPUT_TABLE_NAME => $OUTPUT_TABLE_NAME ,OUTPUT_TABLE_FIELDS => $OUTPUT_TABLE_FIELDS );
Query output table.
SELECT TOP 100 * FROM IDENTIFIER($OUTPUT_TABLE_NAME) ORDER BY (RECORDID);
Check multiple names with selected output fields
Call stored procedure to check multiple names with selected output fields.
USE GLOBAL_NAME.CORE; /* Set input parameters, replace with your values */ SET LICENSE = '<REPLACE_WITH_YOUR_LICENSE_KEY>'; SET OPTIONS = '<OptionName_1:Parameter,OptionName_2:Parameter>'; SET INPUT_TABLE_NAME = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE_NAME>'; SET OUTPUT_TABLE_NAME = '<OUTPUT_TABLE_NAME>'; SET OUTPUT_TABLE_FIELDS = '<Field_1,Field_2>'; /* Map your input columns with our default input fields, replace with your actual column names if they differ from our default values */ CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS SELECT RECID AS RECORDID ,COALESCE(FULLNAME, '') AS FULLNAME ,COALESCE(COMPANYNAME, '') AS COMPANY ,COALESCE(COUNTRY, '') AS COUNTRY FROM IDENTIFIER($INPUT_TABLE_NAME); /* Call the check procedure */ CALL CHECK_MULTIPLE_NAMES( LICENSE => $LICENSE ,OPTIONS => $OPTIONS ,INPUT_TABLE_NAME => TABLE(INPUT_RECORDS) ,OUTPUT_TABLE_NAME => $OUTPUT_TABLE_NAME ,OUTPUT_TABLE_FIELDS => $OUTPUT_TABLE_FIELDS -- Size limit for variables is 256. If your input string exceeds the limit, parse the string directly in the call -- e.g. OUTPUT_TABLE_FIELDS => 'Field_1,Field_2' );
Query output table.
SELECT TOP 100 * FROM IDENTIFIER($OUTPUT_TABLE_NAME) ORDER BY (RECORDID);
Check multiple names with ‘ALL’ output fields
Call stored procedure to check multiple names with ‘All’ output fields.
USE GLOBAL_NAME.CORE; /* Set input parameters, replace with your values */ SET LICENSE = '<REPLACE_WITH_YOUR_LICENSE_KEY>'; SET OPTIONS = '<OptionName_1:Parameter,OptionName_2:Parameter>'; SET INPUT_TABLE_NAME = '<INPUT_DATABASE>.<INPUT_SCHEMA>.<INPUT_TABLE_NAME>'; SET OUTPUT_TABLE_NAME = '<OUTPUT_TABLE_NAME>'; SET OUTPUT_TABLE_FIELDS = 'All'; /* Map your input columns with our default input fields, replace with your actual column names if they differ from our default values */ CREATE OR REPLACE TEMPORARY VIEW INPUT_RECORDS AS SELECT RECID AS RECORDID ,COALESCE(FULLNAME, '') AS FULLNAME ,COALESCE(COMPANYNAME, '') AS COMPANY ,COALESCE(COUNTRY, '') AS COUNTRY FROM IDENTIFIER($INPUT_TABLE_NAME); /* Call the check procedure */ CALL CHECK_MULTIPLE_NAMES( LICENSE => $LICENSE ,OPTIONS => $OPTIONS ,INPUT_TABLE_NAME => TABLE(INPUT_RECORDS) ,OUTPUT_TABLE_NAME => $OUTPUT_TABLE_NAME ,OUTPUT_TABLE_FIELDS => $OUTPUT_TABLE_FIELDS -- Size limit for variables is 256. If your input string exceeds the limit, parse the string directly in the call -- e.g. OUTPUT_TABLE_FIELDS => 'Field_1,Field_2' );
Query output table.
SELECT TOP 100 * FROM IDENTIFIER($OUTPUT_TABLE_NAME) ORDER BY (RECORDID);
DROP_OUTPUT_TABLE#
After the creation, output table is only allowed for:
Select.
SELECT TOP 100 * FROM <OUTPUT_TABLE_NAME> ORDER BY (RECORDID);
Insert.
By calling the same stored procedure without changing the input structure, new records will be inserted to the same table.
Drop.
Use stored procedure
DROP_OUTPUT_TABLE
if you wish to remove the table from the application database. Only tables created by the procedure call can be dropped.CALL GLOBAL_NAME.CORE.DROP_OUTPUT_TABLE('<OUTPUT_TABLE_NAME>');
Default Output Fields#
If OUTPUT_TABLE_FIELDS is not specified, output table will have a default schema as below.
Column Name |
Data Type |
---|---|
RECORDID |
NUMBER |
INCOMPANY |
VARCHAR |
INFULLNAME |
VARCHAR |
INCOUNTRY |
VARCHAR |
COMPANY |
VARCHAR |
NAMEPREFIX |
VARCHAR |
NAMEFIRST |
VARCHAR |
NAMEMIDDLE |
VARCHAR |
NAMELAST |
VARCHAR |
NAMESUFFIX |
VARCHAR |
NAMENICKNAME |
VARCHAR |
GENDER |
VARCHAR |
SALUTATION |
VARCHAR |
RESULTS |
VARCHAR |
TIMESTAMP |
TIMESTAMP_NTZ |
Versions and Updates#
Check for current version#
Select Data Products > Apps, the current version of the app will be on display.
Or, run this query in Projects > Worksheets.
SHOW APPLICATIONS;
Updates#
When Melissa releases a new version of the Native App, your installed application will get updated automatically.
However, you will need to reinstall the app’s functionality after the upgrade is complete, as described in Application Configuration.
Result Codes#
For the full list of Result Codes returned by Native App Global Name: Snowflake, please visit here.
Interpreting Results#
Melissa products use a result code system to indicate data quality; the status and any errors. These result codes are four-character codes (two letters followed by two numbers), delimited by commas. Result code definitions are shared among Melissa products. Instead of looking at multiple properties and methods to determine status, you can look at the output of the results parameter.
SE## and GE## Codes#
The SE## and GE## codes (Transmission Service Error and General Transmission Error) are used to signify more general errors, and are returned under the key TransmissionResults
in the outermost level of our responses.
NS## and NE## Codes#
The NS## and NE## codes (Name Status and Name Error) are returned alongside each name record in a request.
Example
This example input: ‘Mr John and Mrs Mary Jones’ will return the result code string:
NS01, NS05, NS06, NS07, NS08
From these result codes you can determine that the disposition of the Name is:
Code |
Description |
Recommendation |
---|---|---|
|
Name parsing was successful. |
Medium |
|
FirstName1 was found in our census table of names. Very likely to be a real first name. |
Good |
|
LastName1 was found in our census table of names. Very likely to be a real last name. |
Good |
|
FirstName2 was found in our census table of names. Very likely to be a real first name. |
Good |
|
LastName2 was found in our census table of names. Very likely to be a real last name. |
Good |
Some other result codes examples:
Code |
Description |
Recommendation |
---|---|---|
|
An error was detected. Please check for a name error code. |
Bad |
|
A vulgarity was detected in the name. |
Bad |
|
The name contained words found on the list of nuisance names, such as “Mickey Mouse.” |
Bad |