我对oraclesql还比较陌生。我正在尝试创建一个包含两个参数的存储过程。我在下面保存时出错。你知道吗?
CREATE OR REPLACE PROCEDURE SWAP_VIEWS
(
SchemaName NVARCHAR,
TableName NVARCHAR
) AS
BEGIN
DECLARE SQLstring NVARCHAR :=
'ALTER VIEW AS POL.V_' + TableName + ' as SELECT * FROM ' + SchemaName + '.' + TableName
EXEC SQLstring;
END SWAP_VIEWS ;
3条答案
按热度按时间0aydgbwb1#
这里的版本已更正
连接字符是|
必须声明变量sqlstring
执行变量的方法是立即执行
您可以使用create或replace force view代替alter view
1szpjjfi2#
在这里,您似乎混合了sql server和oracle语法:
oracle使用标准运算符
||
用于字符串串联,而不是+
甲骨文想要EXECUTE IMMEDIATE
而不是EXEC
你需要CREATE OR REPLACE VIEW
NVARCHAR2
应优先考虑NVARCHAR
注意,您不需要中间变量赋值,可以连接查询字符串并立即执行它。考虑:
sg2wtvxw3#
我已经采取了你的程序和修改如下,看看它是否有效。另外,我想说的是,您可以在过程中显式地执行异常处理,以捕获执行过程中的任何错误,并且使用“*”创建视图也有一些缺点。请查查