Created
November 4, 2021 14:28
-
-
Save orellabac/b629de3d32a6fd6b6cba702d935b79b2 to your computer and use it in GitHub Desktop.
ALTER_COLUMN Store Procedure for Snowflake
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE OR REPLACE PROCEDURE ALTER_COLUMN(TABLE_NAME VARCHAR, TABLE_SCHEMA VARCHAR, TABLE_COLUMN VARCHAR, NEW_VALUE VARCHAR) RETURNS STRING | |
LANGUAGE JAVASCRIPT AS | |
$$ | |
var EXEC = (sql,...binds)=>snowflake.execute({sqlText:sql,binds:binds}); | |
var cols = EXEC(`SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=UPPER('${TABLE_NAME}') AND TABLE_SCHEMA=UPPER('${TABLE_SCHEMA}')`); | |
var newSQL = `CREATE OR REPLACE TABLE ${TABLE_SCHEMA}.${TABLE_NAME} AS\n SELECT \n`; | |
var count = cols.getRowCount(); | |
while (cols.next()) | |
{ | |
count--; | |
if (cols['COLUMN_NAME'] == TABLE_COLUMN) | |
newSQL += NEW_VALUE + "AS " + cols['COLUMN_NAME']; | |
else | |
newSQL += cols['COLUMN_NAME']; | |
if (count > 0) { newSQL += ",\n";} | |
} | |
newSQL+=`\n FROM ${TABLE_SCHEMA}.${TABLE_NAME}`; | |
EXEC(newSQL); | |
return `Column ${TABLE_COLUMN} change using expression ${NEW_VALUE}`; | |
$$; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment