在Oracle过程中将变量与列的默认值进行比较

时间:2013-07-24 21:12:38

标签: sql oracle stored-procedures default-value

我有一个包含两列具有默认varchar值的表。此外,我有一个存储过程,它接收4个值,两个varchar值和两个日期。我想将两个输入varchar值与表中两列的默认值进行比较,即使没有将任何行插入表中也是如此。有可能这样做吗?

这不起作用,但是沿着这些方向发展。

create or replace 
PROCEDURE TEST_PROC
(
  TEST_NAME IN VARCHAR2  
, TEST_VERSION IN VARCHAR2  
, TEST_START IN DATE  
, TEST_END IN DATE 
) AS
BEGIN

if TEST_NAME = TABLE.COL_1.DEFAULT_VALUE 
AND TEST_VERSION = TABLE.COL_2.DEFAULT_VALUE ...

1 个答案:

答案 0 :(得分:1)

使用数据字典获取列的默认值。然后在过程中声明变量并比较输入。像这样,例如:

SELECT TABLE_NAME||'.'||COLUMN_NAME, DATA_DEFAULT
INTO tableVariable, defaultVariable
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME=:myTable
AND COLUMN_NAME=:myColumn
AND DATA_DEFAULT IS NOT NULL

您也可以将它用作光标,然后循环播放。