# name: test/sql/prepared/test_basic_prepare.test # description: Basic prepared statements # group: [prepared] statement ok PREPARE s1 AS SELECT CAST($1 AS INTEGER), CAST($2 AS STRING) statement ok EXECUTE s1(42, 'dpfkg') statement ok EXECUTE s1(43, 'asdf') # not enough params statement error EXECUTE s1(43) ---- # too many statement error EXECUTE s1(43, 'asdf', 42) ---- # wrong non-castable types statement error EXECUTE s1('asdf', 'asdf') ---- statement ok DEALLOCATE s1 # we can deallocate non-existing statements statement ok DEALLOCATE s2 # now its gone statement error EXECUTE s1(42, 'dpfkg') ---- # prepare a statement that cannot be prepared statement error PREPARE EXPLAIN SELECT 42 ---- Parser Error: syntax error at or near "SELECT" statement error PREPARE CREATE TABLE a(i INTEGER) ---- Parser Error: syntax error at or near "CREATE" statement error SELECT * FROM a; ---- # type will be resolved to "double" statement ok PREPARE s1 AS SELECT $1+$2 statement ok DEALLOCATE s1 # but this works statement ok PREPARE s1 AS SELECT NOT($1), 10+$2, $3+20, 4 IN (2, 3, $4), $5 IN (2, 3, 4) statement ok EXECUTE s1(1, 2, 3, 4, 2) # these types default to varchar statement ok PREPARE s1 AS SELECT $1 statement ok PREPARE s2 AS SELECT (SELECT $1) statement ok PREPARE s3 AS SELECT $1=$2