Comprehensive and Detailed Explanation From Exact Extract:
Snowflake supports both implicit and explicit transactions. However, only specific statement types are allowed within transactions.
Option C:
This is correct. In Snowflake, transactions can be started with any of the following: BEGIN, BEGIN WORK, or START TRANSACTION. Transactions can be ended using COMMIT, COMMIT WORK, or ROLLBACK.
Official Extract:
"You can explicitly start a transaction using the BEGIN, BEGIN WORK, or START TRANSACTION statements and end it using the COMMIT, COMMIT WORK, or ROLLBACK statements."
Source:Snowflake SQL Transactions
Option E:
This is correct. Transactions should only include DML statements (INSERT, UPDATE, DELETE, MERGE) and queries. DDL statements (CREATE, ALTER, DROP) automatically commit and cannot be part of an explicit transaction block.
Official Extract:
"A transaction can contain only DML statements and queries. Any DDL statement implicitly commits the current transaction."
Source:Snowflake SQL Transactions
Option A:
Incorrect. DDL statements are not allowed inside explicit transactions. If used, they trigger an implicit commit.
Option B:
Incorrect. The autocommit setting cannot be modified within a stored procedure. Autocommit is session-level and not dynamically changeable within procedural logic.
Option D:
Incorrect. Snowflake does not support END TRANSACTION as a valid SQL command. The correct ending statement for a transaction is COMMIT or ROLLBACK.
[References:, Snowflake Documentation: Transactions, COMMIT / ROLLBACK Commands, SnowPro Advanced Study Guide – SQL Semantics and Transaction Management, , , ]