github.com/mithrandie/csvq@v1.18.1/docs/_posts/2006-01-02-prepared-statement.md (about) 1 --- 2 layout: default 3 title: Prepared Statement - Reference Manual - csvq 4 category: reference 5 --- 6 7 # Prepared Statement 8 9 A prepared statement is used to execute the same statement repeatedly with embedded values. 10 11 * [Usage Flow](#usage_flow) 12 * [Prepare Statement](#prepare) 13 * [Execute Prepared Statement](#execute) 14 * [Dispose Prepared Statement](#dispose) 15 * [Placeholder](#placeholder) 16 17 ## Usage Flow 18 {: #usage_flow} 19 20 1. Prepare a statement. 21 2. Execute the statement using embedded values. 22 3. Dispose the statement as necessary. 23 24 ## Prepare Statement 25 {: #prepare} 26 27 ```sql 28 PREPARE statement_name FROM statement; 29 ``` 30 31 _statement_name_ 32 : [identifier]({{ '/reference/statement.html#parsing' | relative_url }}) 33 34 _statement_ 35 : [string]({{ '/reference/value.html#string' | relative_url }}) 36 37 38 ## Execute Prepared Statement 39 {: #execute} 40 41 ```sql 42 execute_statement 43 : EXECUTE statement_name; 44 | EXECUTE statement_name USING replace_value [, replace_value ...]; 45 46 replace_value 47 : value 48 | value AS placeholder_name 49 ``` 50 51 _statement_name_ 52 : [identifier]({{ '/reference/statement.html#parsing' | relative_url }}) 53 54 _value_ 55 : [value]({{ '/reference/value.html' | relative_url }}) 56 57 _placeholder_name_ 58 : [identifier]({{ '/reference/statement.html#parsing' | relative_url }}) 59 60 Placeholder names are used for named placeholders. 61 62 63 ## Dispose Prepared Statement 64 {: #dispose} 65 66 ```sql 67 DISPOSE PREPARE statement_name; 68 ``` 69 70 _statement_name_ 71 : [identifier]({{ '/reference/statement.html#parsing' | relative_url }}) 72 73 ## Placeholder 74 {: #placeholder} 75 76 Positional Placeholder 77 : Question Mark(U+003F `?`) 78 79 Named Placeholder 80 : Colon(U+003A `:`) and followd by [identifier]({{ '/reference/statement.html#parsing' | relative_url }}) 81 82 ### Example 83 84 ```sql 85 -- Positional Placeholder 86 PREPARE stmt1 FROM 'SELECT ?, ?, ?;'; 87 EXECUTE stmt1 USING 'a', 'b', 'c'; 88 89 -- Named Placeholder 90 PREPARE stmt2 FROM 'SELECT :second, :third, :first;'; 91 EXECUTE stmt2 USING 'a' AS `first`, 'b' AS `second`, 'c' AS `third`; 92 ```