Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将输入参数作为值传递到存储过程中_Sql_Amazon Web Services_Stored Procedures_Amazon Redshift - Fatal编程技术网

Sql 将输入参数作为值传递到存储过程中

Sql 将输入参数作为值传递到存储过程中,sql,amazon-web-services,stored-procedures,amazon-redshift,Sql,Amazon Web Services,Stored Procedures,Amazon Redshift,我正在使用SQL(plpgsql)。我创建了一个存储过程,它接受一个类似于“DUMMYVAR”的varchar值。我想使用输入值('DUMMYVAR')来填充表的整个列,然而,,当我尝试运行它时出现的输出错误,存储过程发出信号说'DUMMYVAR'不是列 下面是一个示例存储过程: CREATE OR REPLACE PROCEDURE my_procedure(myvar VARCHAR) AS $$ BEGIN INSERT INTO mytable (var1, var2, dumm

我正在使用SQL(plpgsql)。我创建了一个存储过程,它接受一个类似于“DUMMYVAR”的
varchar
值。我想使用输入值('DUMMYVAR')来填充表的整个列,然而,,当我尝试运行它时出现的输出错误,存储过程发出信号说'DUMMYVAR'不是列

下面是一个示例存储过程:

CREATE OR REPLACE PROCEDURE my_procedure(myvar VARCHAR)
AS $$
BEGIN
    INSERT INTO mytable (var1, var2, dummyvar)
        SELECT 'HELLO', 'WORLD', myvar
        FROM othertable;
END;
$$

假设
othertable
中有5条记录,并且
myvar='DUMMYVAR'
,我希望得到以下输出:

var1    var2    dummyvar
HELLO   WORLD   DUMMYVAR
HELLO   WORLD   DUMMYVAR
HELLO   WORLD   DUMMYVAR
HELLO   WORLD   DUMMYVAR
HELLO   WORLD   DUMMYVAR

对我来说似乎很好

创建临时表测试\u源(
行id整数标识
,col_1 VARCHAR
);
插入测试源(列1)
值('hello world')
,(“你好,世界”)
,(“你好,世界”)
,(“你好,世界”)
,(“你好,世界”)
;
创建临时表测试\u目标(
行id整数
,col_1 VARCHAR
,col_2 VARCHAR
);
创建或替换程序sp\U insert\U test(测试值VARCHAR)
作为$$
开始
插入测试目标(行id、列1、列2)
选择*,测试_值
来自测试源;
结束;
$$语言plpgsql;
;
调用sp_insert_test(“test-test-test”)
;
按1从测试目标顺序中选择*
;
行id |列1 |列2
--------+-------------+----------------
1 |你好世界|测试
2 |你好世界|测试
3 |你好世界|测试
4 |你好世界|测试
5 |你好世界|测试

INSERT语句指的是
dummvar
,而不是
dummyvar
——或者这是打字错误?如果手动运行
INSERT
语句,是否有效?